达梦数据库的快速数据加工具dmfldr
dmfldr (DM Fast Loader)是 DM 提供的快速数据装载命令行工具。用户通过使用dmfldr 工具能够把按照一定格式排序的文本数据以简单、快速、高效的方式载入到 DM 数据库中,或把 DM 数据库中的数 据按照一定格式写入文本文件。
控制文件control是启动dmfldr 必须的要指定的参数,用于指定数据文件中数据的格式,在数据载入时,dmfldr 根据控制文件指定的 格式来解析数据文件。在导出数据时,dmfldr 会根据控件文件指定的列分隔符、行分隔符等生成数据文件。
快速加载示例 1:
1.1、编辑数据文件
[dmdba@localhost fldr]$ cat test.txt
1,aaaaa,2022-04-21
2,bbbbb,
3,cccc,2021-11-11
1.2、编写控制文件
[dmdba@localhost fldr]$ cat test.ctl
LOAD DATA
INFILE ‘/dm8/fldr/test.txt’
INTO TABLE TEST.TEST1
FIELDS ‘,’
1.3、创建表
SQL> create table TEST.TEST1(id int, name varchar(20), bir date);
1.4、快速加载数据(需要对’符号进行转义)
[dmdba@localhost bin]$ ./dmfldr sysdba/dameng123
control=‘/dm8/fldr/fldrtest.ctl’
快速加载示例 2 :大字段导入、导出
2.1、建立有大字段的表
create table test.dtoutput(c1 int, c2 blob, c3 clob);
insert into test.dtoutput values(1,0XAB1211032DE,‘THIS IS A dmfldr test’);
insert into test.dtoutput values(2,0XAB1211032DE,‘werwerwr3cdsRWR’);
insert into test.dtoutput values(3,0XAB1211032DE,‘REWRWRWCVDHGH’);
COMMIT;
select * from test.dtoutput;
2.2、创建控制文件
[dmdba@localhost fldr]$ cat dtfldr.ctl
LOAD DATA
INFILE ‘/dm8/fldr/dtfldr.txt’
INTO TABLE TEST.DTOUTPUT
FIELDS ‘|’
(C1,
C2,
C3)
2.3、大字段导出
[dmdba@localhost bin]$ ./dmfldr sysdba/dameng123 control=‘/dm8/fldr/dtfldr.ctl’ lob_directory=‘/dm8/fldr’ mode=‘out’
2.4、大字段导入–创建带大字段的表
create table test.dtinput(c1 int, c2 blob, c3 clob);
2.5、大字段导入–创建控制文件
[dmdba@localhost fldr]$ cat dtfldr.ctl
LOAD DATA
INFILE ‘/dm8/fldr/dtfldr.txt’
INTO TABLE TEST.DTINPUT
FIELDS ’ |’
(C1,
C2,
C3)
2.6、大字段导入
[dmdba@localhost bin]$ ./dmfldr sysdba/dameng123
control=‘/dm8/fldr/dtfldr.ctl’ lob_directory=‘/dm8/fldr’ mode=‘in’
错误数据文件写入
[dmdba@localhost bin]$ ./dmfldr sysdba/dameng123 control=‘/dm8/fldr/dtfldr.ctl’ lob_directory=‘/dm8/fldr’ badfile=‘/dm8/fldr/test.bad’
快速加载示例3:
3.1、创建数据文件
[dmdba@localhost fldr]$ cat test2.txt
ID,NAME
1,AAAA
2,BBBB
3
4,dddddd
3.2、创建表
create table test.t50(id int, name varchar(20));
3.3、创建控制文件
[dmdba@localhost fldr]$ cat test2.ctl
options(
skip=1
)
LOAD DATA
INFILE ‘/dm8/fldr/test2.txt’
INTO TABLE TEST.T50
FIELDS ‘,’
3.4、加载数据
[dmdba@localhost bin]$ ./dmfldr sysdba/dameng123 control=‘/dm8/fldr/test2.ctl’ badfile=‘/dm8/fldr/test2.bad’
dmfldr 的使用存在以下一些限制:
不支持向临时表、外部表装载数据
不支持向系统表装载数据
不支持向带有位图索引的表装载数据
不支持向带有函数索引的表装载数据
不支持向带有全文索引的表装载数据
不支持向带有全局索引的表装载数据
不支持向 DCP代理装载数据
dmfldr 装载时,对约束进行检查,对各种约束的处理机制如下表所示: