当前位置: 首页 > 工具软件 > DIMP > 使用案例 >

达梦数据库逻辑导入工具dimp使用

爱茂勋
2023-12-01

工具介绍

逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。
四种级别所提供的功能:
 数据库级(FULL):导出或导入整个数据库中的所有对象。
 用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。
 模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。
 表级(TABLES):导出或导入一个或多个指定的表或表分区。

dexp和dimp工具位于达梦数据库软件安装目录下的bin目录下($DM_HOME/bin),其中dexp为导出工具,dimp为导入工具,导入dexp导出的dmp文件。

需要注意的是,低版本dimp工具无法导入高版本dexp工具导出的dmp文件。

使用说明

dimp工具使用方法与dexp工具使用方法基本相同。

[dmdba@localhost bin]$ ./dimp help
dimp V8
格式: ./dimp KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)

例程: ./dimp SYSDBA/SYSDBA IGNORE=Y ROWS=Y FULL=Y

USERID 必须是命令行中的第一个参数

关键字                 说明(默认值)
--------------------------------------------------------------------------------
USERID                 用户名/口令 格式:{<username>[/<password>] | /}[@<connect_identifier>][<option>] [<os_auth>]
                       <connect_identifier> : [<svc_name> | host[:port] | <unixsocket_file>]
                       <option> : #{<exetend_option>=<value>[,<extend_option>=<value>]...}
                                  --此行外层{}是为了封装参数之用,书写时需要保留
                       <os_auth> : AS {SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO}
FILE                   导入文件名称 (dexp.dmp)
DIRECTORY              导入文件所在目录
FULL                   整库导入 (N)
OWNER                  以用户方式导入 格式 (user1,user2,...)
SCHEMAS                以模式方式导入 格式 (schema1,schema2,...)
TABLES                 以表名方式导入 格式(table1,table2,...)
PARALLEL               用于指定导入的过程中所使用的线程数目
TABLE_PARALLEL         用于指定导入的过程中每个表所使用的子线程数目,在FAST_LOAD为Y时有效
IGNORE                 忽略创建错误 (N)
TABLE_EXISTS_ACTION    需要的导入表在目标库中存在时采取的操作[SKIP | APPEND | TRUNCATE | REPLACE]
FAST_LOAD              是否使用dmfldr来导数据(N)
FLDR_ORDER             使用dmfldr是否需要严格按顺序来导数据(Y)
COMMIT_ROWS            批量提交的行数(5000)
EXCLUDE                忽略指定的对象 格式 
                           格式 EXCLUDE=(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS)
GRANTS                 导入权限 (Y)
CONSTRAINTS            导入约束 (Y)
INDEXES                导入索引 (Y)
TRIGGERS               导入触发器 (Y)
ROWS                   导入数据行 (Y)
LOG                    指定日志文件
NOLOGFILE              不使用日志文件(N)
NOLOG                  屏幕上不显示日志信息(N)
LOG_WRITE              日志信息实时写入文件(N): 是(Y),否(N)
DUMMY                  交互信息处理(P): 打印(P), 所有交互都按YES处理(Y),NO(N) 
PARFILE                参数文件名
FEEDBACK               每 x 行显示进度 (0)
COMPILE                编译过程, 程序包和函数... (Y)
INDEXFILE              将表的索引/约束信息写入指定的文件
INDEXFIRST             导入时先建索引(N)
REMAP_SCHEMA           格式(SOURCE_SCHEMA:TARGET_SCHEMA)
                       将SOURCE_SCHEMA中的数据导入到TARGET_SCHEMA中 
ENCRYPT_PASSWORD       数据的加密密钥
ENCRYPT_NAME           加密算法的名称
SHOW/DESCRIBE          打印出指定文件的信息(N)
TASK_THREAD_NUMBER     用于设置dmfldr处理用户数据的线程数目
BUFFER_NODE_SIZE       用于设置dmfldr读入文件缓冲区大小
TASK_SEND_NODE_NUMBER  用于设置dmfldr发送节点个数[16,65535]
LOB_NOT_FAST_LOAD      如果一个表含有大字段,那么不使用dmfldr,因为dmfldr是一行一行提交的
PRIMARY_CONFLICT       主键冲突的处理方式[IGNORE|OVERWRITE|OVERWRITE2],默认报错
TABLE_FIRST            是否先导入表(N):是(Y),否(N)
SHOW_SERVER_INFO       是否打印服务器信息(N):是(Y),否(N)
HELP                   打印帮助信息

常用命令

全库导入(FULL)

./dimp SYSDBA/SYSDBA@LOCALHOST:5236 DIRECTORY=/home/dmdba file=dexp_full.dmp log=dimp_full.log full=y

用户导入(OWNER)

导入一个或多个用户拥有的对象

(1)目的库创建对应的用户
create user OA IDENTIFIED BY "123456789";
grant resource,PUBLIC,vti,soi to oa;

create user SCOTT IDENTIFIED BY "123456789";
grant resource,PUBLIC,vti,soi to SCOTT;

(2)导入dmp文件
./dimp SYSDBA/SYSDBA@LOCALHOST:5236 DIRECTORY=/home/dmdba file=dexp_owner.dmp log=dimp_full1.log OWNER=OA,SCOTT

输出信息:

[dmdba@localhost bin]$ ./dimp SYSDBA/SYSDBA@LOCALHOST:5236 DIRECTORY=/home/dmdba file=dexp_owner.dmp log=dimp_full1.log OWNER=OA,SCOTT

dimp V8

本地编码:PG_UTF8, 导入文件编码:PG_GB18030

开始导入模式[OA]......

导入模式中的 NECESSARY GLOBAL 对象……

模式中的 NECESSARY GLOBAL 对象导入完成……


----- [2022-03-24 20:26:52]导入表:test -----


创建表 test ...

导入表 test 的数据:1484 行被处理

导入模式中的 GLOBAL 对象……

模式中的 GLOBAL 对象导入完成……

模式[OA]导入完成......


开始导入模式[SCOTT]......

导入模式中的 NECESSARY GLOBAL 对象……

模式中的 NECESSARY GLOBAL 对象导入完成……


----- [2022-03-24 20:26:52]导入表:DEPT -----


创建表 DEPT ...

导入表 DEPT 的数据:4 行被处理


----- [2022-03-24 20:26:52]导入表:EMP -----


创建表 EMP ...

导入表 EMP 的数据:14 行被处理


----- [2022-03-24 20:26:52]导入表:BONUS -----


创建表 BONUS ...

表 BONUS 的数据导入完成,共导入数据:0 行


----- [2022-03-24 20:26:52]导入表:SALGRADE -----


创建表 SALGRADE ...

导入表 SALGRADE 的数据:5 行被处理

导入模式中的 GLOBAL 对象……

模式中的 GLOBAL 对象导入完成……

模式[SCOTT]导入完成......


整个导入过程共花费    0.582 s


成功终止导入, 没有出现警告

模式导入(SCHEMAS)

常规使用

如果模式不存在,需要创建模式所属的用户,然后在导入。

如果执行导入的用户不是模式所属的用户,需要执行导入的用户拥有跨用户建表的权限。

./dimp SYSDBA/SYSDBA@LOCALHOST:5237 DIRECTORY=/home/dmdba file=dexp_schemas.dmp log=dimp_schemas.log  schemas=scott

模式映射(REMAP_SCHEMA)

REMAP_SCHEMA:将源模式中的数据导入到目标模式中。

使用语法如下:

remap_schema=<源模式>:<目的模式>

i.如果指定的源模式不存在,则导入到对象原来所在的模式。

ii.如果目标模式不存在,会自动创建目标模式,再继续导入。自动创建模式所属用户为执行导入的用户。比如:示例中如果SCOTT1模式不存在,则会自动创建SCOTT1模式,模式所属用户为TEST用户。

示例:

将scott模式对象数据导入到scott1模式中。

./dimp TEST/123456789@LOCALHOST:5237 DIRECTORY=/home/dmdba file=dexp_scott.dmp log=dimp_scott1.log remap_schema=scott:scott1

表导入

导入指定的表

(1)如果dmp文件是带tables选项导出指定的表,则可以创建表所属用户后,再直接导入,导入时可以不加TABLES选项

./dimp SCOTT/123456789@LOCALHOST:5236 DIRECTORY=/home/dmdba file=dexp_tab2.dmp log=dimp_tab2.log

(2)如果dmp文件为整个模式的导出文件,创建表所属用户后使用tables选项指定需要导入的表

./dimp SYSDBA/SYSDBA@LOCALHOST:5236 DIRECTORY=/home/dmdba file=dexp_schemas.dmp log=dimp_tab2.log tables=scott.dept,scott.dept
或者
./dimp SCOTT/123456789@LOCALHOST:5236 DIRECTORY=/home/dmdba file=dexp_tab2.dmp log=dimp_tab2.log tables=emp,dept

(3)将A模式下的表导入到B模式下,需要使用remap_schema选项

表存在时的处理方式(TABLE_EXISTS_ACTION)

TABLE_EXISTS_ACTION:需要的导入表在目标库中存在时采取的操作。默认为直接报错。

SKIP:跳过此表。

APPEND:直接向现有表中导入数据。

TRUNCATE:先删除现有表中的数据,再向表中导入数据

REPLACE:先删除现有表,再导数

示例:

如果目标库中存在相同表,则跳过该表导入。

./dimp SCOTT/123456789@LOCALHOST:5236 DIRECTORY=/home/dmdba file=dexp_tab2.dmp log=dimp_tab2.log TABLE_EXISTS_ACTION=skip
 类似资料: