一、前言

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

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐