dmfldr快速装载简单使用

dmfldr 快速装载工具是对DM数据库中表数据的快速载入和导出。注意:只针对表数据,一般表中数据量比较大会用快速装载。

一、创建测试表,插入测试数据

create table test1(id int,name varchar);
insert into test1 values(1,'test1');
commit;
create table test2(id int,name varchar,type int);
insert into test2 values(1,'test2',1);
commit;

二、创建控制文件dmfldr1.ctl和dmfldr2.ctl

dmfldr1.ctl文件内容如下:

LOAD DATA
INFILE '/dm8/DAMENG /data/test1.txt' STR X '0A'
BADFILE '/dm8/DAMENG /data/test1.bad'
INTO TABLE test1

 

dmfldr2.ctl文件内容如下:

LOAD DATA
INFILE '/dm8/DAMENG/data/test2.txt' STR X '0A'
BADFILE '/dm8/DAMENG /data/test2.bad'
INTO TABLE test2

注意:

1、控制文件需要自己创建并命名,“.ctl”、“ .ctrl”、“ .txt”等文件类型都支持。

2、into table指定导出或导入的表,我本地安装dm8的时候忽略大小写,INTO TABLE 'test1'和INTO TABLE test1效果是一样的,表名称加不加引号都可以正常导入导出,不确定这中间是否有关联关系。

3、一个LOAD DATA对应一张表,多张表的话可以配置多个控制文件,然后写个脚本执行。

4、数据导出到test1.txt,不删除该文件,再次导出,数据不会被清空,而是在原有数据的基础上append,向表中导入也是一样,表中的数据append。

比如,一开始表test1中有一条数据,导出到test1.txt文件后,test1.txt文件中有一条数据。这个时候用test1.txt向test表中导入数据,test1表中就有两条数据了。再次导出到test1.txt,test1.txt中有3条数据。

5、STR X '0A'  用来指定换行符,其实一般不用指定,默认换行即可。

  换行符 windows 默认为 0x0D0A(\r\n),非windows 默认为 0x0A(\n)。

  [X]表示指定的<value>值为十六进制的字符串值,指定X则<value>值不再需要以0x开头。STR X '0A'  和STR '0x0A'效果一样。

6、BADFILE指定错误日志文件,如果导入错误,会生成错误信息。

7、FIELDS '|'用来指定列分割符,本例中没有指定,就用默认的,默认分割符为"|",也可以指定为其他任意符号。

8、具体格式可以参考《DM8_dmfldr使用手册.pdf》

三、创建导出执行脚本

脚本内容如下:

./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/dm8/DAMENG/dmfldr/dmfldr1.ctl\' mode=\'out\'

./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/dm8/DAMENG/dmfldr/dmfldr2.ctl\' mode=\'out\'

 

 

说明:也可以不创建执行脚本,直接在bin目录下执行./dmfldr XXXX。

四、执行导出脚本

 

 

五、导入

可以像导出一样写成脚本执行,也可以直接执行,导出也可以不写脚本。

./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/dm8/DAMENG/dmfldr/dmfldr1.ctl\'

./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/dm8/DAMENG/dmfldr/dmfldr2.ctl\'

 

 

六、其他

补充一些特殊参数的用法。

1、SET_IDENTITY

  默认值为false,比如id字段为自增,向该字段导入数据时,无论你导入文件中对应的id值为多少,数据库都会自动编号。

  如果值为true,则需要用户自己控制导入文件中对应的id值的准确性。

  值为false时,导入文件中的值如下:

  

   最终导入效果如下:

  

   指定该参数的方式如下:

dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control='E:\dmdbms\data\test2.ctl' set_identity=true

 2、DIRECT

  数据装载方式,默认为true,快速装载模式,通过数据的转换和数据的封装直接对 B 树进行操作,省去普通插入方式下各个操作符之间的跳转,提升了装载的效率,但是约束等需要用户自己去维护。

 3、NULL_STR

  这个参数比较冷门,不太常用,导入数据时,如果值为te,则设置为null

OPTIONS
(
SKIP = 0
ROWS = 50000
DIRECT = TRUE
INDEX_OPTION = 2
NULL_STR = 'te'
)
LOAD DATA
INFILE 'E:\dmdbms\data\test2.txt' STR X '0A'
BADFILE 'E:\dmdbms\data\test2.bad'
INTO TABLE test2
FIELDS TERMINATED BY X '07'
(
id,
name,
type
)

  待导入的数据(分割符是二进制):

   

   导入效果:

  

 

 4、SKIP

  跳过数据文件起始的逻辑行数。

  控制文件中的配置如下:

  

 

   待导入的数据如下:

  

 

   导入效果:

  从第5行开始导入的,跳过前4行。

  

 

 5、LOAD

  装载的最大行数,整型数值。默认的最大装载行数为数据文件中的所有行数。LOAD 指定的值不包括 SKIP 指定的跳过的行数。和SKIP一样在OPTIONS中配置。

 

 

 

更多资讯请上达梦技术社区了解: https://eco.dameng.com

posted @ 2021-07-14 19:21  xiaowu222  阅读(945)  评论(0)    收藏  举报