dmfldr(DM Fast Loader)是达梦数据库提供的快速数据装载命令行工具。用户通过使用dmfldr工具能够把一定格式的文本数据以简单、快速、高效的方式导入到达梦数据库中,或把达梦数据库中的数据按照一定格式导出到文本文件。其功能与Oracle的sqlldr类似。比如在实际业务应用中,假设A系统因为业务场景需要做数据分析,此时需要B系统的用户行为数据,如果实时性要求不高,而B系统数据量又很大时,可以使用dmfldr数据装载方式同步数据,即B系统导出该表部分字段数据给A系统,A系统导入后做数据分析。
dmfldr工具分为服务端和客户端。当进行数据导入时,dmfldr客户端接收用户提交的命令与参数,分析控制文件与数据文件,将数据打包发送给服务器端的dmfldr模块,由服务器完成数据的装载工作,装载完成后,客户端分析服务器返回的消息,根据用户参数生成日志文件与错误数据文件。当进行数据导出时,dmfldr客户端解析命令与参数,分析控制文件,将用户要求转换成相应消息发送给服务器端的dmfldr模块,服务器解析并打包导出需要的数据,发送给dmfldr客户端,客户端将数据写入指定的数据文件,并根据用户参数指定生成日志文件。
用法说明
./dmfldr help
格式: ./dmfldr KEYWORD=value
例程: ./dmfldr SYSDBA/SYSDBA CONTROL=’/opt/data/fldr.ctl’
USERID 必须是命令行中的第一个参数
CONTROL 必须是命令行中的第二个参数
字符串类型参数必须以引号封闭
关键字 | 说明(默认值) |
---|---|
USERID | 用户名/口令 格式:{ [/ ] | /}[@ ][ |
CONTROL | 控制文件,字符串类型 |
LOG | 日志文件,字符串类型 (fldr.log) |
BADFILE | 错误数据记录文件,字符串类型 (fldr.bad) |
SKIP | 初始忽略逻辑行数 (0) |
LOAD | 需要装载的行数 (ALL) |
ROWS | 提交频次 (50000), DIRECT为FALSE有效 |
DIRECT | 是否使用快速方式装载 (TRUE) |
SET_IDENTITY | 是否插入自增列 (FALSE) |
SORTED | 数据是否已按照聚集索引排序 (FALSE) |
INDEX_OPTION | 索引选项 (1) 1 不刷新二级索引,数据按照索引先排序,装载完后再将排序的数据插入索引 2 不刷新二级索引,数据装载完成后重建所有二级索引 3 刷新二级索引 ,数据装载的同时将数据插入二级索引 |
ERRORS | 允许的最大数据错误数 (100) |
CHARACTER_CODE | 字符编码,字符串类型 (GBK, UTF-8, SINGLE_BYTE, EUC-KR) |
MODE | 装载方式,字符串类型 IN表示载入,OUT表示载出, 表示载出ORACLE (IN) |
CLIENT_LOB | 大字段目录是否在本地 (FALSE) |
LOB_DIRECTORY | 大字段数据文件存放目录 |
LOB_FILE_NAME | 大字段数据文件名称,仅导出有效 (dmfldr.lob) |
BUFFER_NODE_SIZE | 读入文件缓冲区的大小 (10),有效值范围1~2048 |
LOG_SIZE | 日志信息缓冲区的大小 (1),有效值范围1~100 |
READ_ROWS | 工作线程一次最大处理的行数 (100000),最大支持2^26-10000 |
NULL_MODE | 载入时NULL字符串是否处理为NULL,载出时空值是否处理为NULL字符串 (FALSE) |
NULL_STR | 载入时视为NULL值处理的字符串 |
SEND_NODE_NUMBER | 运行时发送节点的个数 (20),有效值范围16~65535 |
TASK_THREAD_NUMBER | 处理用户数据的线程数目,默认与处理器核数量相同,有效值范围1~128 |
BLDR_NUM | 服务器BLDR数目 (64),有效值范围1~1024 |
BDTA_SIZE | bdta的大小 (5000),有效值范围100~10000 |
COMPRESS_FLAG | 是否压缩bdta (FALSE) |
MPP_CLIENT | MPP环境,是否本地分发 (TRUE) |
SINGLE_FILE | MPP环境,是否只生成单个数据文件(FALSE) |
LAN_MODE | MPP环境,是否以内网模式装载数据(FALSE) |
UNREP_CHAR_MODE | 非法字符处理选项(0),为0时表示跳过该数据行,为1时表示使用(*)替换错误字节 |
SILENT | 是否静默方式装载数据(FALSE) |
BLOB_TYPE | BLOB类型字段数据值的实际类型,字符串类型 (HEX_CHAR),HEX表示值为十六进制,HEX_CHAR表示值为十六进制字符类型,仅在direct=FALSE有效 |
OCI_DIRECTORY | OCI动态库所在的目录 |
DATA | 指定数据文件路径 |
ENABLE_CLASS_TYPE | 允许用户导入CLASS类型数据 (FALSE) |
FLUSH_FLAG | 提交时是否立即刷盘 (FALSE) |
IGNORE_BATCH_ERRORS | 是否忽略错误数据继续导入 (FALSE) |
SINGLE_HLDR_HP | 是否使用单个HLDR装载HUGE水平分区表 (TRUE) |
EP | 指定需要发送数据的站点序号列表,仅向MPP环境导入数据时有效 |
PARALLEL | 是否开启并行装载(FALSE) |
SQL | 使用自定义查询语句,仅导出模式有效 |
HELP | 打印帮助信息 |
测试
编辑数据文件
vim /tmp/abc.txt
1 1|2015-11-06
2 2|2015-11-05
3 3|2015-11_04
编辑控制文件
vim /tmp/abc.ctrl
LOAD DATA
INFILE ‘/tmp/abc.txt’ —在控制文件中指定数据文件
INTO TABLE test
FIELDS ‘|’ —表示用|竖线分隔字段数据
(
C1 TERMINATED BY ‘ ‘, —指定某列数据的分隔符
C2,
C3 DATE FORMAT ‘yyyy-mm-dd’
)
加载数据
./dmfldr userid=aaa/123:22222 control=/’/tmp/abc.ctrl/’
装载失败会在当前目录下生成fldr.bad文件
more fldr.bad
dmfldr: 2022-01-24 16:03:56 AAA->TEST 1|2015-11-06
dmfldr: 2022-01-24 16:03:56 AAA->TEST 2|2015-11-05
dmfldr: 2022-01-24 16:03:56 AAA->TEST 3|2015-11_04
dmfldr: 2022-01-24 16:05:57 AAA->TEST 1|2015-11-06
dmfldr: 2022-01-24 16:05:57 AAA->TEST 2|2015-11-05
dmfldr: 2022-01-24 16:05:57 AAA->TEST 3|2015-11_04
达梦社区地址:https://eco.dameng.com