dmfldr的全称是DM Fast Loader,是DM7提供的快速数据装载工具,能够简单、快速、高效地把按一定格式排列的文本数据装载到DM数据库中,也能将DM7中的数据按一定格式写入文本文件。相比于其他数据迁移工具,dmfldr适合数据量特别巨大的情况,且性能相比其他工具更好,但是功能性方面较差。
一、载出
先创建控制文件用来指定导入或导出数据文件的路径、格式以及其他 dmfldr 参数值。
在/opt/目录下创建控制文件city.ctl,内容如下:
LOAD DATA
INFILE ‘/opt /city.txt’
INTO TABLE DMHR.CITY
FIELDS ‘|’
LOAD DATA:表明应用dmfldr执行装载数据操作
INFILE:当载入数据的时候,指定对应控制文件的路径;当载出数据的时候,指定载出的文本数据文件路径。指定的载出的文本数据文件路径存放在/opt/city.txt中。
INTO TABLE:指定要载入或载出的表,这里是DMHR模式下的CITY表。
FILEDS:载入或载出的数据分隔符,这里是“|”。
dmfldr执行程序存放在达梦数据库的bin目录下,切换到该目录下,执行装载数据命令
./dmfldr userid=SYSDBA/SYSDBA@192.168.72.30:5236 control=’/opt/city.ctl’ mode=‘out’
userid:用于指定登录数据库的信息,包含用户名、密码、服务器地址、端口号,此参数为必选参数且必须位于参数位置的第一个。
control:控制文件的路径,此参数为必选参数且必须位于参数位置的第二个。
mode:装载模式,MODE 的可选项有 IN、OUT 和OUTORA 三种。
载出完成后可以查看city.txt中导出的数据和表中是否一致
二、载入
1.创建表
在DMHR模式下创建CITYNEW表,结构与之前CITY表相同:
CREATE TABLE “DMHR”.“CITYNEW”
(
“CITY_ID” CHAR(3) NOT NULL,
“CITY_NAME” VARCHAR(40),
“REGION_ID” INT,
CONSTRAINT “CITYNEW_C_ID_PK” NOT CLUSTER PRIMARY KEY(“CITY_ID”),
CONSTRAINT “CITYNEW_REG_FK” FOREIGN KEY(“REGION_ID”)
REFERENCES “DMHR”.“REGION”(“REGION_ID”)
) STORAGE(ON “MAIN”, CLUSTERBTR) ;
2.创建控制文件citynew.ctl
内容如下
LOAD DATA
INFILE ‘/opt/city.txt’
INTO TABLE DMHR.CITYNEW
FIELDS ‘|’
3.在数据库bin目录下执行载入语句
./dmfldr userid=SYSDBA/SYSDBA@192.168.72.30:5236 control=’/opt/citynew.ctl’ mode=‘in’
数据已成功装载到CITYNEW表中,可以通关管理工具验证:
DMFIDR作用远不止于此,它的参数也有很多,上面只是应用了一部分,可以通过“dmfldr help”命令查看各参数的简单信息。
关键字 说明(默认值)
--------------------------------------------------------------------------------
USERID 用户名/口令 格式:USER/PWD@SERVER:PORT#SSL_PATH@SSL_PWD
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 不刷新二级索引,数据装载完成后重建所有二级索引
ERRORS 允许的最大数据错误数 (100)
CHARACTER_CODE 字符编码,字符串类型 (GBK, UTF-8, SINGLE_BYTE, EUC-KR)
MODE 装载方式,字符串类型 IN表示载入,OUT表示载出,
OUTORA表示载出ORACLE (IN)
CLIENT_LOB 大字段目录是否在本地 (FALSE)
LOB_DIRECTORY 大字段数据文件存放目录
LOB_FILE_NAME 大字段数据文件名称,仅导出有效 (dmfldr.lob)
BUFFER_NODE_SIZE 读入文件缓冲区的大小 (10),有效值范围1~2048
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环境导入数据时有效
HELP 打印帮助信息