DM8 工具dmfldr使用

安装好 DM 数据库管理系统后
在安装目录的“bin”子目录下可找到 dmfldr 执行文件。启动时必须指定必须参数
例如:
dmfldr USERID=SYSDBA/SYSDBA CONTROL=‘c:\fldr.ctl’
USERID必须是第一个参数,CONTROL必须是第二个参数,这两个参数都不能省略;其余参数均为可选参数,可以不指定,指定时也无顺序要求

参数值的优先选择
顺序为先 OPTIONS 选项,后参数选项

OPTIONS
(
SKIP = 0 //跳过数据文件起始的逻辑行数,整型数值。默认的跳过起始行数为 0 行
ROWS = 50000//每次提交的行数,整形数值。默认的提交行数为 50000 行。
DIRECT = TRUE//数据装载方式,布尔值。默认为 TRUE,不处理有约束冲突的数据,快速装载
INDEX_OPTION = 2//索引的设置选项,整形数值。默认为 1,代表服务器在快速装载过程中不刷新二级索引数据,只在装
载完成时重建所有二级索引,后续了解索引级别
)
LOAD DATA//一次装载,有几个load装载几个表
INFILE ‘C:/Users/47390/Desktop/dmfldr/test1.txt’ STR X ‘0A’
BADFILE ‘C:/Users/47390/Desktop/dmfldr/test1.bad’
//记录错误数据的文件路径
INTO TABLE test1 //输入值到test1表
FIELDS ‘|’
(
F1,
F2 DATE FORMAT ‘YYYY-MM-DD’,
F3 NULL,
F4 TERMINATED BY WHITESPACE ENCLOSE BY ‘(’,
F5 CONSTANT “test”,
F6 “trim()”
)//输入表字段,与数据库表字段对应
LOAD DATA
INFILE ‘C:\Users\47390\Desktop\dmfldr\test2.txt’ STR X ‘0A’
BADFILE ‘C:\Users\47390\Desktop\dmfldr\test2.bad’
INTO TABLE test2
FIELDS ‘|’
(
C1 TERMINATED BY ’ ',
C2,
C3 “sysdate”
)

此方法
在windows下使用dmfldr,执行完毕后直接关闭

Dmfldr USERID=SYSDBA/SYSDBA@localhost:5236 CONTROL=‘C:\Users\47390\Desktop\dmfldr\dmfldr.ctl’
@localhost:5236可以去掉默认5236端口

在控制文件中指定数据文件
建表 TEST
DROP TABLE TEST;
CREATE TABLE TEST(C1 INT,C2 INT,C3 DATE);
2) 编辑数据文件 test.txt,存放路径为C:\Users\47390\Desktop\dmfldr/test.txt,文件内容如下
1 1|2015-11-06
2 2|2015-11-05
3 3|2015-11_04
3) 编辑控制文件 test.ctl,存放路径为C:\Users\47390\Desktop\dmfldr/test.ctl,内容如下:
LOAD DATA
INFILE ‘C:\Users\47390\Desktop\dmfldr\test.txt’
INTO TABLE test
FIELDS ‘|’
(
C1 TERMINATED BY ’ ',
C2,
C3 DATE FORMAT ‘yyyy-mm-dd’
)

dmfldr USERID=SYSDBA/SYSDBA@localhost:5236 CONTROL=‘C:\Users\47390\Desktop\dmfldr\test.ctl’
查看表内容,已写入

在这里插入图片描述

使用 DATA 参数指定数据文件
编辑控制文件 test.ctl,存放路径为C:\Users\47390\Desktop\dmfldr/test.ctl,内容如下:
LOAD DATA
INFILE *
INTO TABLE test
FIELDS ‘|’
(
C1 TERMINATED BY ’ ',
C2,认名称fldr.ba
C3 DATE FORMAT ‘yyyy-mm-dd’
)
使用 dmfldr 进行数据载入
dmfldr USERID=SYSDBA/SYSDBA@localhost:5236 CONTROL=‘C:\Users\47390\Desktop\dmfldr\test.ctl’
data='C:\Users\47390\Desktop\dmfldr\test.txt’
data替换INFILE指定的文档路径

数据转换与错误数据文件

修改test.txt文件
1 1|2015-11-06
2 2|2015-11-05
3 3|2015-11_04
44|aaaa-bbb-ccc

修改test.ctl文件
LOAD DATA
INFILE ‘C:\Users\47390\Desktop\dmfldr\test.txt’
INTO TABLE test
FIELDS ‘|’
(
C1 TERMINATED BY ’ ',
C2,
C3 DATE FORMAT ‘yyyy-mm-dd’
)

dmfldr USERID=SYSDBA/SYSDBA@localhost:5236 CONTROL=‘C:\Users\47390\Desktop\dmfldr\test.ctl’,未指定badfile默认生成在安装bin目录,默认名称fldr.bad

在这里插入图片描述

内容:dmfldr: 2022-01-06 21:12:55 SYSDBA->TEST 44|aaaa-bbb-ccc
应该是插入44|aaaa-bbb-ccc这条数据失败在这里插入图片描述

前面数据插入成功

语句顺序替换,正确数据会插入,错误数据会直接跳过并记录到指定bad文件
在这里插入图片描述

LOB_DIRECTORY’导出文件位置
LOB_FILE_NAME导出文件名
Mode模式默认为 in out为导出

当 MODE 为 IN 且 DIRECT 为 TRUE 时,此时数据载入若涉及到大字段对象,需要用户
指定大字段数据文件。若 CLIENT_LOB 为 TRUE,LOB_DIRECTORY 应指定大字段数据文
件所在的客户端本地目录,且此时待载入的大字段长度不得超过 2G,否则无法成功载入大
字段;若 CLIENT_LOB 为 FALSE,用户必须先把相关文件传送到 DM 服务器所在主库,然
后使用 LOB_DIRECTORY 指明存放目录
大字段数据文件在数据文件中指定,可以是任意格式的文件。在数据文件中,大字段以
“文件名:起始偏移:长度”的形式记录在数据文件中。指定的文件名无效时,dmfldr 会
报错,装载失败。对于 CLOB 类型字段,当指定的偏移、长度范围内带有不完整字符时,
dmfldr 将装载失败。

CREATE TABLE TEST(C1 INT,C2 BLOB,C3 CLOB);

1|testblob.txt:0:10|testclob.txt:0:10
2|testblob.txt:10:20|testclob.txt:10:20
3|testblob.txt:20:30|testclob.txt:20:30
testblob.txt、testclob.txt 为文本文件,长度大于 30 字节

当 MODE 为 IN 且 DIRECT 为 FALSE 时,数据文件中大字段列数据即字段内容。
BLOB_TYPE 为 HEX_CHAR 时,数据文件中 BLOB 列当作为十六进制内容;
BLOB_TYPE 为 HEX 时,数据文件中 BLOB 列为字符串形式内容,导入后会转换
为十六进制。
BLOB_TYPE 参数只对 DIRECT 为 FALSE 时有效,默认为 HEX_CHAR。

CREATE TABLE TEST(C1 INT,C2 BLOB,C3 CLOB);

1|0x12d3c8a7|abcdefg
2|0x12a4cbac|hijlkmn
3|0x22d3c8b3|adefhjd
对应三个字段值
BLOB_TYPE指定后,对应列进制转换

dmfldr 的日志文件路径由 LOG 参数设置

当 DIRECT 参数为 FALSE 时,dmfldr 将把从数据文件中读取的自增列值作为目标值
插入数据库表中,用户应当保证每一行的自增列的值符合自增列的规则,否则将造成数据混
乱。
当 DIRECT 参数为 TRUE 时,dmfldr 提供了 SET_IDENTITY 参数(默认为 FALSE)
对数据载入时自增列的处理进行设置:
 如果指定 SET_IDENTITY 选项值为 TRUE,则 dmfldr 将把从数据文件中读取的
自增列值作为目标值插入数据库表中,用户应当保证每一行的自增列的值符合自增
列的规则,否则将造成数据混乱;
 如果 SET_IDENTITY 选项值设置为 FALSE,则 dmfldr 将忽略数据文件中对应
自增列的值,服务器将根据自增列定义和表中已有数据自动生成自增列的值插入每
一行的对应列。

CREATE TABLE TEST(C1 INT IDENTITY(1,1),C2 VARCHAR);
INSERT INTO TEST(C2) VALUES(‘AAA’);
INSERT INTO TEST(C2) VALUES(‘BBB’);
COMMIT;

插入
2|aaa
3|bbb
4|ccc

参数direct=true set_identity=false

数据会因为略数据文件中对应自增列的值改为3 4 5

direct=true set_identity=true
在这里插入图片描述

C1下面值会与输入值一致

SORTED 参数用来设置数据是否已经按照聚集索引排序,默认为 FALSE。
如果设置为 TRUE,则用户必须保证数据已按照聚集索引排序完成,并且如果表中存在
数据,需要插入的数据索引值要比表中数据的索引值大,服务器在做插入操作时顺序进行插
入。若数据并未按照索引排序,则 dmfldr 会报错,装载失败。
如果设置为 FALSE,则服务器对于每条记录进行定位插入。
用户也可以通过设置控制文件中的 OPTIONS 选项来设置 SORTED 的值。SORTED 参数
值的优先选择为 OPTIONS 选项,参数选项。此参数为可选参数,作用于 MODE 为 IN
且 DIRECT 为 TRUE 的情况下,对于其他情况此参数无效。顺序
在数据量大,并且确定数据已按照聚集索引排序完成的情况下,将 SORTED 参数设置
为 TRUE,可以提升装载性能

2|aaa
3|bbb
4|ccc
5|ddd
1|zzz
使用 dmfldr 进行数据载入sorted=true

由于本例中数据文件中的数据并没有按照 C1 列排序,dmfldr 将会报错。
不能使用 NOSORT 选项,数据非有序
最左边字段要从小到大排列

dmfldr 通过设置 NULL_MODE 参数来处理空值。
设置为 TRUE,载入时 NULL 字符串处理为 NULL,载出时空值处理为 NULL 字符

设置为 FALSE,载入时 NULL 字符串处理为字符串,载出时空值处理为空串

1|aaa
2|NULL
3|null

null_mode=true

null都转为NULL VALUE
1 aaa
2 2 NULL VALUE
3 3 NULL VALUE

输出原字符串
null_mode=false
1 aaa
2 2 NULL
3 3 null

dmfldr 的使用存在以下一些限制:
不支持向临时表、外部表装载数据
不支持向系统表装载数据
不支持向带有位图索引的表装载数据
不支持向带有函数索引的表装载数据
不支持向带有全文索引的表装载数据
不支持向 DCP 代理装载数据

社区地址:https://eco.dameng.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值