DM8_dmfldr 快速装载工具命令行工具

DM8_dmfldr 快速装载工具命令行工具

用途: DM 数据库中表数据的快速载入和导出.

dmfldr 工具能够把按照一定格式排序的文本数据以简单、快速、高效的方式载入到 DM 数据库中,或把 DM 数据库中的数据按照一定格式写入文本文件。 -- 文本文件

启动dmfldr

工具目录: <数据库软件安装目录>/bin

查看帮助:

[dmdba@dm8 bin]$ ./dmfldr help

version: 03134283890-20220525-161267-10045 Pack7

格式: ./dmfldr   KEYWORD=value

例程: ./dmfldr   SYSDBA/SYSDBA CONTROL='/opt/data/fldr.ctl'

USERID 必须是命令行中的第一个参数

CONTROL 必须是命令行中的第二个参数

字符串类型参数必须以引号封闭

关键字              说明(默认值)

--------------------------------------------------------------------------------

USERID              用户名/口令, 格式:{[/] | /}[@][

                     : [ | host[:port] | ]

                    

                               --此行外层{}是为了封装参数之用,书写时需要保留

                     : AS {SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO}

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表示载出,

                    OUTORA表示载出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/DPC环境,是否只生成单个数据文件(FALSE)

LAN_MODE            MPP/DPC环境,是否以内网模式装载数据(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/DPC环境导入数据时有效

PARALLEL            是否开启并行装载(FALSE)

SQL                 使用自定义查询语句,仅导出模式有效

TABLE               导入/出表

ROW_SEPERATOR       行分隔符

FIELD_SEPERATOR     列分隔符

COMMIT_OPTION       提交选项(0), 0:每发送一批数据后提交, 1:发送完所有数据后提交

APPEND_OPTION       追加选项(0), 0: 追加方式, 1: 替代方式, 2: 插入方式

COLNAME_HEADING     是否在导出文件头中打印列名(FALSE)

IGNORE_AIMLESS_DATA 是否忽略无目标数据(FALSE)

LOB_AS_VARCHAR      是否将CLOB作为VARCHAR进行导入导出(FALSE)

LOB_AS_VARCHAR_SIZE 将CLOB作为VARCHAR进行导入导出时, lob数据最大大小(10)MB

LOG_LEVEL           记录错误数据信息级别(3), 0: 不记录 1: 只记录到log文件 2: 只记录到bad文件 3: 记录到log和bad文件

HELP                打印帮助信息

例如: 

dmfldr USERID=SYSDBA/SYSDBA CONTROL='c:\fldr.ctl'

指定参数的方法和优先级: 控制文件中的OPTIONS选项指定的参数> 命令行中指定的参数 > dmfldr.ini配置文件中指定的参数.

注意: USERID 必须是第一参数 , CONTROL 必须是第二参数.

dmfldr控制文件

OPTIONS

(

SKIP = 0

ROWS = 50000        --每次提交的行数

DIRECT = TRUE        --数据装载方式,布尔值。默认为 TRUE

INDEX_OPTION = 2    --索引的设置选项,整形数值。默认为 1. 2.在快速装载后,重建所有二级索引.

)

LOAD DATA

INFILE '/opt/data/test1.txt' STR X '0A'

BADFILE '/opt/data/test1.bad'

INTO TABLE test1

FIELDS '|'

(

F1,

F2 DATE FORMAT 'YYYY-MM-DD',

F3 NULL,

F4 TERMINATED BY WHITESPACE ENCLOSE BY '(',

F5 CONSTANT "test",

F6 "trim()"

)

LOAD DATA

INFILE '/opt/data/test2.txt' STR X '0A'

BADFILE '/opt/data/test2.bad'

INTO TABLE test2

FIELDS '|'

(

C1 TERMINATED BY ' ',

C2,

C3 "sysdate"

)

-- 用例练习

--单表导入.

--创建表

1) 建表 TEST

DROP TABLE TEST;

CREATE TABLE TEST(C1 INT,C2 INT,C3 DATE);

2) 编辑数据文件 test.txt,存放路径为/opt/data/test.txt,文件内容如下

1 1|2015-11-06

2 2|2015-11-05

3 3|2015-11_04

3) 编辑控制文件 test.ctl,存放路径为/opt/data/test.ctl,内容如下:

LOAD DATA

INFILE '/opt/data/test.txt'

INTO TABLE test

FIELDS '|'

(

C1 TERMINATED BY ' ',

C2,

C3 DATE FORMAT 'yyyy-mm-dd'

)

4) 使用 dmfldr 进行数据载入

./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/opt/data/test.ctl\'

错误数据处理

设置badfile参数

/dmfldr userid=SYSDBA/SYSDBA@LOCALHOST:5236 control=\'/opt/data/testv3.ctl\' badfile=\'/opt/data/test.bad\'

more /opt/data/test.bad

大字段数据的处理

创建表:

DROP TABLE TEST;

CREATE TABLE TEST(C1 INT,C2 BLOB,C3 CLOB);

--导出

vim test.ctl

NFILE '/opt/data/test2.txt'

INTO TABLE test

FIELDS '|'

(

C1,

C2,

C3

)

导出语句:

./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/opt/data/test.ctl\' LOB_DIRECTORY=\'/opt/data/\' LOB_FILE_NAME=\'test3.txt\'  mode=\'out\'

--导入

vim testv5.ctl

LOAD DATA

INFILE '/opt/data/test2.txt'

INTO TABLE test

FIELDS '|'

(

C1,

C2,

C3

)

导入语句:

./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/opt/data/testv5.ctl\'LOB_DIRECTORY=\'/opt/data/\' badfile=\'/opt/data/test5.bad\'

日志文件及日志信息

    dmfldr 的日志文件路径由 LOG 参数设置,默认日志文件名为 fldr.log。

例如: 

./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/opt/data/test.ctl\'log=\'/opt/data/test.log\'

自增列需要谨慎处理.

当 当 DIRECT 参数为 TRUE 时 ,使用参数SET_IDENTITY 来控制自增列的处理, 

true: 则 dmfldr 将把从数据文件中读取的自增列值作为目标值插入数据库表中,用户应当保证每一行的自增列的值符合自增

列的规则,否则将造成数据混乱

false: 则 dmfldr 将忽略数据文件中对应自增列的值,服务器将根据自增列定义和表中已有数据自动生成自增列的值插入每

一行的对应列。

语句示例:

./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/opt/data/test.ctl\'  direct=true set_identity=false

数据排序:

SORTED 参数用来设置数据是否已经按照聚集索引排序,默认为 FALSE。

如果设置为 TRUE,则用户必须保证数据已按照聚集索引排序完成,并且如果表中存在数据,需要插入的数据索引值要比表中数据的索引值大,服务器在做插入操作时顺序进行插

入。若数据并未按照索引排序,则 dmfldr 会报错,装载失败。

如果设置为 FALSE,则服务器对于每条记录进行定位插入。此参数仅在 MODE 为 IN 且 DIRECT 为 TRUE 的情况下有效

语句示例:

./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/opt/data/test.ctl\' sorted=true  -- 可以提高插入速度

空值处理

dmfldr 通过设置 NULL_MODE 参数来处理空值。

设置为 TRUE,载入时 NULL 字符串处理为 NULL,载出时空值处理为 NULL 字符串.

设置为 FALSE,载入时 NULL 字符串处理为字符串,载出时空值处理为空串.

语句示例:

./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/opt/data/test.ctl\' null_mode=true

条件过滤

通过在控制文件中指定 WHEN 子句,可以在装载过程中对数据进行过滤,符合 field_conditions 条件的数据才会被装载.

个性设置

用户通过设置 dmfldr 的 SKIP、LOAD、ROWS 参数,可以根据自己的需求调整装载的起始行、装载最大行数以及每次提交的行数。

SKIP 参数用来设置跳过数据文件起始的逻辑行数,整形数值。

LOAD 参数用来设置装载的最大行数,整形数值。

ROWS 参数用来设置每次提交的行数,整

形数值。默认的提交行数为 50000 行。

达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

你可能感兴趣的:(DM,达梦数据库,数据库,java,sql)