注册
dmfldr 实战
专栏/培训园地/ 文章详情 /

dmfldr 实战

魏文东 2024/06/06 736 0 0
摘要

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 节点中指定数据文件。

  1. 建表 TEST
    DROP TABLE TEST;
    CREATE TABLE TEST(C1 INT,C2 INT,C3 DATE);
  2. 编辑数据文件 test.txt,存放路径为/dm/dmdata/test.txt,文件内容如下
    1 1|2015-11-06
    2 2|2015-11-05
    3 3|2015-11_04
  3. 编辑控制文件 test.ctl,存放路径为/dm/dmdata/test.ctl,内容如下:
    LOAD DATA
    INFILE '/dm/dmdata/test.txt'
    INTO TABLE test
    FIELDS '|'
    (
    C1 TERMINATED BY ' ',
    C2,
    C3 DATE FORMAT 'yyyy-mm-dd'
    )
  4. 使用 dmfldr 进行数据载入
    /dmfldr userid=SYSDBA/dameng123@172.16.10.84:5236 control='/dm/dmdata/test.ctl' log='/dm/dmdata/test.log'
  5. 查看表 TEST 的数据
    SELECT * FROM TEST;
    例2 --使用 DATA 参数指定数据文件
    使用 DATA 参数指定 dmfldr 的数据文件,数据文件路径的优先选择顺序为先控制文件,后参数选项。
    如果控制文件中数据文件路径指定为‘’,在命令行通过 DATA参数指定数据文件路径,DATA 所指定的文件路径会替换‘’。
  6. 建表 TEST
    DROP TABLE TEST;
    CREATE TABLE TEST(C1 INT,C2 INT,C3 DATE);
  7. 编辑数据文件 test.txt,存放路径为/dm/dmdata/test.txt,文件内容如下
    1 1|2015-11-06
    2 2|2015-11-05
    3 3|2015-11_04
  8. 编辑控制文件 test.ctl,存放路径为/dm/dmdata/test.ctl,内容如下:
    LOAD DATA
    INFILE *
    INTO TABLE test
    FIELDS '|'
    (
    C1 TERMINATED BY ' ',
    C2,
    C3 DATE FORMAT 'yyyy-mm-dd'
    )
  9. 使用 dmfldr 进行数据载入
    ./dmfldr userid=SYSDBA/dameng123@172.16.10.84:5236 control='/dm/dmdata/test.ctl' data='/dm/dmdata/test.txt' log='/dm/dmdata/test.log'
  10. 查看表 TEST 的数据
    SELECT * FROM TEST;
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服