达梦命令行

连接数据库

1
2
3
4
5
6
7
8
cd /data/dm/dmdbms/tool
./disql
用户名:
密码:
# 也可以一行操作
./disql SYSDBA/SYSDBA@LOCALHOST:5236
# 包含特殊字符
./disql TEST/'"test@123"'@LOCALHOST:5236

查询表结构

1
2
# describe <表名>
describe table_name;

创建用户

1
2
3
4
# 创建用户:GOOZOE,密码:GOOZOE,默认会创建一个同名的模式(也就是默认库)
create user GOOZOE identified by GOOZOE;
# 修改用户密码:GOOZOE,密码:GOOZOE2,前提具备权限
alter user GOOZOE identified by GOOZOE2;

执行sql文件

1
2
## 有坑,sql第一行加上set define off;
`/path/to/file.sql

修改聚集索引字段

1
2
3
4
5
6
7
8
9
10
11
# 错误示范 报错"不能修改或删除聚集索引的列"
ALTER TABLE TABLE_A MODIFY ID VARCHAR(100);
# 正确方式,使用新列替换
ALTER table TABLE_A add column ID2 varchar(100); # 添加新列id2,好像不能使用after,只能放在最后
UPDATE TABLE_A set ID2 = ID; # 复制id列数据到id2
ALTER TABLE TABLE_A RENAME COLUMN ID TO ID3; # 修改id列为id3列
ALTER TABLE TABLE_A RENAME COLUMN ID2 TO ID; # 修改id2列为id列
CREATE CLUSTER INDEX IDXTABLEAID ON TABLE_A(ID); # 为id列添加聚集索引,索引名称自定义,不可重复
SELECT constraint_name FROM user_constraints WHERE table_name = 'TABLE_A' and constraint_type = 'P'; # 查询该表主键索引
ALTER table TABLE_A drop constraint CONS_TABLE_A_ID; # 此时可正常删除原主键索引,索引名来自上面的select结果
ALTER table WAMEWP.TABLE_A drop column ID3; # 删除id3列

数据导入导出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 原数据库
# 进入bin目录,注意非tool目录
cd /home/dmdba/dmdbms/bin
导出:
./dexp SYSDBA/SYSDBA@LOCALHOST:5236 directory=<导出目录> file=GOOZOE.dmp SCHEMAS=GOOZOE

# 目标数据库
# 进入工具目录
cd /data/dm/dmdbms/tool
./disql
conn SYSDBA/SYSDBA:5237

# 创建用户:GOOZOE,密码:GOOZOE,默认会创建一个同名的模式(也就是默认库)
create user GOOZOE identified by GOOZOE;

# 进入bin目录
cd /data/dm/dmdbms/bin
# 导入-使用映射模式导入,源模式:GOOZOE,目标模式:GOOZOE:注意使用有权限的账号,一般使用sysdba
./dimp SYSDBA/SYSDBA@LOCALHOST:5237 directory=<dmp文件所在目录> file=GOOZOE.dmp remap_schema=GOOZOE:GOOZOE table_exists_action=replace

# 验证:
cd /dm/dmdbms/tool
./disql
conn SYSDBA/SYSDBA:5237

## 查模式
SELECT DISTINCT object_name FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'SCH';
## 查表
SELECT table_name FROM dba_tables WHERE owner = 'GOOZOE';


# 重导:
方案一:
删除模式和用户后,重新新建用户后导入
drop user if EXISTS LASERVICEX CASCADE;
方案二:
直接覆盖
./dimp SYSDBA/SYSDBA@LOCALHOST:5237 directory=/data/tools/dmdb file=LASERVICEX-114.dmp remap_schema=LASERVICEX-114:LASERVICEX table_exists_action=replace
====
skip:跳过此表
append:直接向现有表中导入数据
truncate:先删除现有表中的数据,再向表中导入数据
replace:先删除现有表,再导数据
====

达梦命令行
https://www.goozoe.com/posts/33945.html
作者
一起吃西瓜
发布于
2024年10月31日
许可协议