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

浙公网安备 33010602011771号