目录
一.概述
1.功能简介
Dmfldr(DM FAST LOADER)是DM提供的快速数据装载命令行工具。能够快速将文件写入数据库,也可以快速将数据库的数据写入文件
2.系统结构
当进行数据载入时,dmfldr客户端接收用户提交的命令和参数,分析控制文件和数据文件,将数据文件发送给服务器,服务器去做真正的载入工作,之后分析服务器返回的信息,必要时根据用户指定的参数生成日志文件和错误文件。
当进行数据导出时,dmfldr客户端接收用户提交的命令和参数,分析控制文件,将相应信息发送给服务器,服务器进行信息解析,并在完成导出工作后,将导出的数据打包发送给客户端,客户端将数据写入指定的数据文件,并根据指定参数生成日志文件和错误文件。
二.dmfldr入门
1.启动dmfldr
在安装目录的bin目录下启动程序,格式如下:
dmfldr keyword=value [keyword=value ...]
例如:
dmfldr USERID=SYSDBA/SYSDBA CONTROL='c:\fldr.ctl'
如例子所示,USERID 和 CONTROL 是启动 dmfldr 必须要指定的参数,且 USERID 必 须是第一个参数,CONTROL 必须是第二个参数。
2.dmfldr参数
dmfldr help
3.dmfldr参数简介(参考DM8_dmfldr使用手册.pdf)
注:USERID必须是第一个参数,CONTROL必须是第二个参数,这两个参数都
不能省略;其余参数均为可选参数,可以不指定,指定时也无顺序要求
三.工具使用
1.指定数据文件
执行语句:
- 数据库中建表CREATE TABLE TEST(C1 INT,C2 INT,C3 DATE);
- 编辑数据文件 test.txt
- 编辑控制文件 test.ctl
- 使用 dmfldr 进行数据载入
- 数据库中查看
其中指定数据文件还可以用data参数的方式,这种方式需要在控制文件中写入INFILE ‘*’,而不是具体路径,具体路径在执行语句中写入,例如:
/dm8/bin/dmfldr userid=SYSDBA/SYSDBA@DM01:5236 control=\'/dm8/data/test.ctl\' data=\’/dm8/data/test.txt\’
2.数据转换与错误数据文件
dmfldr 使用的数据文件都是文本格式的,其中的列值都是以字符串的方式保存在数据 文件中。要想将这些数据载入数据库表中,需要将字符串转换成数据库表各列对应的数据类 型。dmfldr 支持所有 DM 数据库支持的列定义类型,包括字符串、数值、时间日期、时间 日期间隔、大字段类型等。
若数据文件的编码方式与 DM 数据库服务器的编码方式不一样,dmfldr 还需要进行字 符编码的转换。dmfldr 支持 UTF8、GBK 和 GB18030 编码之间的相互转换。
数据类型和编码转换工作由 dmfldr 客户端进行,在这个过程中如果出现错误, dmfldr 会跳过该行继续后面的工作,并记录错误行到 BADFILE 指定的文件。常见的出错 的情况有以下几种:
- 编码转换失败
- 目标列为字符串类型时,数据长度大于列定义长度
- 目标列为数值类型时,数据包含非法字符或者转换后超出该数值的范围
- 目标列为日期类型时,dmfldr 默认按 yyyy-mm-dd hh:mi:ss 的格式解析,如 果数据不是这样的格式,需要指定对应列的时间日期 fmt 格式而未指定
dmfldr 错误数据的文件路径由 BADFILE 参数设置,默认的错误文件名为 fldr.bad。 用户也可以通过设置控制文件中的 OPTIONS 选项来指定错误数据文件的路径,同时也可以 在控制文件的 LOAD 节点中指定错误数据文件的路径。错误数据文件路径最终值的优先选择 顺序为 LOAD 节点选项,OPTIONS 选项,参数选项。用户可以同时对三种设置方式中的一 个或多个设置,但最终的值只取一个。BADFILE 仅作用于 dmfldr 的工作 MODE 为 IN 的 情况下,MODE 为 OUT 时无效。
当数据类型和编码转换中存在错误数据,而错误数在允许的最大错误数范围内时, dmfldr 会将出错的数据记录到错误数据文件中。文件记录的信息为执行程序、时间、目标 表、数据文件中存在格式错误的行数据以及转换出错的行数据。