达梦数据库逻辑导入导出:dexp/dimp
一、前言
dexp(逻辑导出)和 dimp(逻辑导入)是达梦数据库自带的命令行工具,位于安装目录的 dmdbms/bin 下。它们用于在数据库联机状态下进行逻辑备份和还原,支持全库、用户、模式、表四种级别的导出导入。
此外,达梦还提供了 dexpdp / dimpdp(服务端版本),与 dexp / dimp 功能相同,但执行位置和文件生成位置不同。
二、逻辑导出(dexp)
2.1基本语法
dexp USERID=用户名/密码@IP:端口 参数1=值1 参数2=值2 ...
重要:USERID 参数必须放在第一位,否则报错 [-2007]:语法分析出错。
2.2 按模式导出(SCHEMAS)
导出整个 TEST 模式的所有对象。
dexp USERID=SYSDBA/Dameng123@127.0.0.1:5239 SCHEMAS=TEST FILE=/home/dmdba/backup/test_schema.dmp LOG=/home/dmdba/backup/test_schema_exp.log
2.3 按表导出(TABLES)
只导出 TEST.EMPLOYEE 表。
dexp USERID=SYSDBA/Dameng123@127.0.0.1:5239 TABLES=TEST.EMPLOYEE FILE=/home/dmdba/backup/test_employee.dmp LOG=/home/dmdba/backup/test_employee_exp.log
2.4 按条件导出(QUERY)
导出 ID < 100 的记录。
dexp USERID=SYSDBA/Dameng123@127.0.0.1:5239 TABLES=TEST.EMPLOYEE QUERY="where ID<100" FILE=/home/dmdba/backup/test_employee_partial.dmp LOG=/home/dmdba/backup/test_employee_partial_exp.log
2.5 只导出表结构(ROWS=N)
只导出表定义,不导出数据。
dexp USERID=SYSDBA/Dameng123@127.0.0.1:5239 SCHEMAS=TEST FILE=/home/dmdba/backup/test_schema_struct.dmp ROWS=N LOG=/home/dmdba/backup/test_schema_struct_exp.log
2.6 dexp 常用参数汇总
|
参数 |
说明 |
示例 |
|
USERID |
数据库登录信息(必选,必须第一位) |
USERID=SYSDBA/Dameng123@127.0.0.1:5239 |
|
FILE |
导出文件名,缺省为 dexp.dmp |
FILE=/data/backup/exp.dmp |
|
LOG |
日志文件名,缺省为 dexp.log |
LOG=exp.log |
|
SCHEMAS |
按模式导出(模式名列表) |
SCHEMAS=TEST,HR |
|
TABLES |
按表导出(表名列表) |
TABLES=TEST.EMPLOYEE,HR.DEPT |
|
QUERY |
按条件导出 |
QUERY=TEST.EMPLOYEE:"where ID<100" |
|
ROWS |
是否导出数据行,默认 Y |
ROWS=N(只导结构) |
|
PARALLEL |
导出线程数,默认 16 |
PARALLEL=32 |
|
TABLE_PARALLEL |
每表子线程数,默认 8 |
TABLE_PARALLEL=16 |
|
EXCLUDE |
忽略指定对象类型 |
EXCLUDE=INDEXES,TRIGGERS |
2.7 dexp 支持的导出级别
dexp 支持四种级别的导出,四种级别独立互斥,不能同时存在:
|
级别 |
参数 |
说明 |
|
全库 |
full=y |
导出整个数据库的所有对象 |
|
按用户 |
owner=USER1 |
导出指定用户的所有对象 |
|
按模式 |
schemas=TEST |
导出指定模式的所有对象 |
|
按表 |
tables=TEST.EMPLOYEE |
导出指定的表 |
三、逻辑导入(dimp)
3.1 基本语法
dimp USERID=用户名/密码@IP:端口 参数1=值1 参数2=值2 ...
3.2 导入到新模式(REMAP_SCHEMA)
将 TEST 模式导入到 TEST2 模式。
步骤1:创建目标模式
disql SYSDBA/Dameng123@localhost:5239 -e "CREATE SCHEMA TEST2;"
步骤2:导入
dimp USERID=SYSDBA/Dameng123@127.0.0.1:5239 FILE=/home/dmdba/backup/test_schema.dmp SCHEMAS=TEST REMAP_SCHEMA=TEST:TEST2 LOG=/home/dmdba/backup/dimp_test2.log
3.3 表存在时追加数据(TABLE_EXISTS_ACTION=APPEND)
当目标表已存在时,使用 APPEND 追加数据。但如果有主键冲突,需要配合 PRIMARY_CONFLICT 参数。
dimp USERID=SYSDBA/Dameng123@127.0.0.1:5239 FILE=/home/dmdba/backup/test_employee.dmp SCHEMAS=TEST REMAP_SCHEMA=TEST:TEST2 TABLE_EXISTS_ACTION=APPEND PRIMARY_CONFLICT=IGNORE
3.4 表存在时清空后导入(TABLE_EXISTS_ACTION=TRUNCATE)
先清空目标表数据,再导入新数据。
dimp USERID=SYSDBA/Dameng123@127.0.0.1:5239 FILE=/home/dmdba/backup/test_schema.dmp SCHEMAS=TEST REMAP_SCHEMA=TEST:TEST2 TABLE_EXISTS_ACTION=TRUNCATE
3.5 表存在时删除重建(TABLE_EXISTS_ACTION=REPLACE)
先删除目标表,再重建并导入数据。
dimp USERID=SYSDBA/Dameng123@127.0.0.1:5239 FILE=/home/dmdba/backup/test_schema.dmp SCHEMAS=TEST REMAP_SCHEMA=TEST:TEST2 TABLE_EXISTS_ACTION=REPLACE
四、逻辑导入导出 vs 其他方式
4.1 逻辑导入导出 vs 物理备份
|
对比项 |
逻辑备份(dexp/dimp) |
物理备份(dmrman) |
|
备份内容 |
数据库对象定义(DDL)和数据行(SQL 语句) |
操作系统物理文件(数据文件、控制文件、日志文件) |
|
关注点 |
数据的内容,不关心物理存储位置 |
数据存储在什么位置 |
|
运行方式 |
联机(数据库运行时) |
脱机(数据库需关闭) |
|
恢复粒度 |
可恢复到表、模式、用户级别 |
通常为全库恢复 |
|
恢复速度 |
较慢(需解析 SQL) |
较快(直接覆盖文件) |
|
适用场景 |
数据迁移、特定对象恢复、开发测试环境刷新 |
灾难恢复、全库还原、任意时间点恢复 |
4.2 逻辑导入导出 vs DTS
|
对比项 |
逻辑导入导出(dexp/dimp) |
DTS 数据迁移工具 |
|
界面 |
命令行 |
图形化界面 |
|
适用范围 |
仅限达梦数据库之间 |
支持多种数据源迁移到达梦 |
|
资源占用 |
低,适合资源受限环境 |
较高,需要图形界面和更多内存 |
|
使用场景 |
生产环境无图形界面、网络未放通时最直接高效 |
跨数据库迁移、图形化操作 |
五、dexpdp / dimpdp(服务端工具)
5.1 与 dexp/dimp 的区别
|
对比项 |
dexp / dimp |
dexpdp / dimpdp |
|
执行位置 |
客户端 |
服务端 |
|
文件生成位置 |
客户端所在目录 |
服务器端指定目录 |
|
DIRECTORY 参数 |
不支持 |
需要数据库目录对象 |
|
适用场景 |
导出到本地 |
导出到服务器,减少网络传输 |
六、完整命令清单
# ========== 导出(dexp) ==========
# 1. 按模式导出
dexp USERID=SYSDBA/Dameng123@127.0.0.1:5239 SCHEMAS=TEST FILE=/home/dmdba/backup/test_schema.dmp LOG=exp_schema.log
# 2. 按表导出
dexp USERID=SYSDBA/Dameng123@127.0.0.1:5239 TABLES=TEST.EMPLOYEE FILE=/home/dmdba/backup/test_employee.dmp
# 3. 按条件导出
dexp USERID=SYSDBA/Dameng123@127.0.0.1:5239 TABLES=TEST.EMPLOYEE QUERY="where ID<100" FILE=/home/dmdba/backup/test_employee_partial.dmp
# 4. 只导结构
dexp USERID=SYSDBA/Dameng123@127.0.0.1:5239 SCHEMAS=TEST FILE=/home/dmdba/backup/test_schema_struct.dmp ROWS=N
# 5. 高并行导出
dexp USERID=SYSDBA/Dameng123@127.0.0.1:5239 SCHEMAS=TEST FILE=/home/dmdba/backup/test_parallel.dmp PARALLEL=32 TABLE_PARALLEL=16
# ========== 导入(dimp) ==========
# 6. 导入到新模式
dimp USERID=SYSDBA/Dameng123@127.0.0.1:5239 FILE=/home/dmdba/backup/test_schema.dmp SCHEMAS=TEST REMAP_SCHEMA=TEST:TEST2
# 7. 追加导入(忽略主键冲突)
dimp USERID=SYSDBA/Dameng123@127.0.0.1:5239 FILE=/home/dmdba/backup/test_employee.dmp SCHEMAS=TEST REMAP_SCHEMA=TEST:TEST2 TABLE_EXISTS_ACTION=APPEND PRIMARY_CONFLICT=IGNORE
# 8. 覆盖主键冲突(DELETE+INSERT)
dimp USERID=SYSDBA/Dameng123@127.0.0.1:5239 FILE=/home/dmdba/backup/test_employee.dmp SCHEMAS=TEST REMAP_SCHEMA=TEST:TEST2 TABLE_EXISTS_ACTION=APPEND PRIMARY_CONFLICT=OVERWRITE
# 9. 更新主键冲突(UPDATE)
dimp USERID=SYSDBA/Dameng123@127.0.0.1:5239 FILE=/home/dmdba/backup/test_employee.dmp SCHEMAS=TEST REMAP_SCHEMA=TEST:TEST2 TABLE_EXISTS_ACTION=APPEND PRIMARY_CONFLICT=OVERWRITE2
# 10. 清空后导入
dimp USERID=SYSDBA/Dameng123@127.0.0.1:5239 FILE=/home/dmdba/backup/test_schema.dmp SCHEMAS=TEST REMAP_SCHEMA=TEST:TEST2 TABLE_EXISTS_ACTION=TRUNCATE
# 11. 删除重建后导入
dimp USERID=SYSDBA/Dameng123@127.0.0.1:5239 FILE=/home/dmdba/backup/test_schema.dmp SCHEMAS=TEST REMAP_SCHEMA=TEST:TEST2 TABLE_EXISTS_ACTION=REPLACE
# 12. 快速导入
dimp USERID=SYSDBA/Dameng123@127.0.0.1:5239 FILE=/home/dmdba/backup/test_schema.dmp SCHEMAS=TEST REMAP_SCHEMA=TEST:TEST2 TABLE_EXISTS_ACTION=REPLACE FAST_LOAD=Y TABLE_PARALLEL=16
# ========== 服务端工具(dexpdp/dimpdp) ==========
# 13. 创建目录对象(先执行)
CREATE DIRECTORY BACKUP_DIR AS '/home/dmdba/backup';
GRANT READ, WRITE ON DIRECTORY BACKUP_DIR TO PUBLIC;
# 14. dexpdp 导出
dexpdp USERID=SYSDBA/Dameng123@127.0.0.1:5239 FILE=test_dp.dmp SCHEMAS=TEST DIRECTORY=BACKUP_DIR LOG=dexpdp.log
# 15. dimpdp 导入
dimpdp USERID=SYSDBA/Dameng123@127.0.0.1:5239 FILE=test_dp.dmp SCHEMAS=TEST REMAP_SCHEMA=TEST:TEST2 DIRECTORY=BACKUP_DIR LOG=dimpdp.log
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)