dmfldr 的使用存在以下一些限制:
1.不支持向临时表、外部表装载数据
2.不支持向系统表装载数据
3.不支持向带有位图索引的表装载数据
4.不支持向带有函数索引的表装载数据
5.不支持向带有全文索引的表装载数据
6.不支持向 DCP 代理装载数据
7.dmfldr 装载时,对约束进行检查,对各种约束的处理机制如下表所示
约束 数据不满足时 数据插入与否 约束是否有效
非空约束(NOT NULL) 报错 不插入 有效
聚集索引(CLUSTER PRIMARY KEY) 报错 不插入 有效
唯一约束(UNIQUE, PRIMARY KEY) 报错 插入 失效
引用约束(FOREIGN KEY) 不报错 插入 有效
CHECK 约束(CHECK) 不报错 插入 有效
创建实例
控制文件案例解读
OPTIONS
(
SKIP = 0 --初始忽略逻辑行数 (0)
ROWS = 50000 --提交频次 (50000), DIRECT 为 FALSE 有效
DIRECT = TRUE --是否使用快速方式装载 (TRUE)
INDEX_OPTION = 2 --2 不刷新二级索引,数据装载完成后重建所有二级索引,一般是表中没有数据或数据很小时
)
LOAD DATA
INFILE '/dm/dmdata/test1.txt' STR X '0A' --指定数据文件路径,dmfldr 在处理数据文件中换行符时 windows 默认为 0x0D0A(\r\n),非windows 默认为 0x0A(\n),若没有指明[X]选项,则<value>值为指定的字符串
BADFILE '/dm/dmdata/test1.bad' --记录错误数据的文件路径,字符串类型
INTO TABLE test1
FIELDS '|' --指定列分割符
(
F1,
F2 DATE FORMAT 'YYYY-MM-DD', --指定该列数据为时间日期格式串
F3 NULL, --指定的值为 NULL,忽略数据文件中的值
F4 TERMINATED BY WHITESPACE ENCLOSE BY '(', --列的结束标志可以是 WHITESPACE(空格)或者用户自定义的字符串或十六进制串,指定了 term_option 后,该列不需要用 FIELDS 分隔
F5 CONSTANT "test", --指定 constant 关键字后,数据文件中不需要为该列准备数据
F6 "trim()" --trim()函数用于去除列数据的前后空格
)
LOAD DATA
INFILE '/dm/dmdata/test2.txt' STR X '0A'
BADFILE '/dm/dmdata/test2.bad'
INTO TABLE test2
FIELDS '|' --指定列分割符
(
C1 TERMINATED BY ' ', --指定列终止符号为空格
C2,
C3 "sysdate" --sysdate 函数用于将系统当前时间插入指定列,忽略数据文件中指定列的值;
)
例1,--在控制文件中指定数据文件
可以在控制文件的 LOAD 节点中指定数据文件。
文章
阅读量
获赞