达梦数据库DM8之数据快速加载工具dmfldr使用方法

达梦数据库DM8之数据快速加载工具dmfldr使用方法


1.概述

1.1 功能介绍

    dmfldr(DM Fast Loader)是 DM 提供的快速数据装载命令行工具。用户通过使用 dmfldr 工具能够把按照一定格式

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

1.2 系统结构

    dmfldr 的系统结构如图所示。

如图所示,dmfldr 实际上除了客户端工具,还包含一个在数据库服务器中的 dmfldr功能模块,它们共同完成 dmfldr 的

各项功能。


  • 当进行数据载入时,dmfldr 客户端接收用户提交的命令与参数,分析控制文件与数据文件,将数据打包发送给

    服务器端的 dmfldr 模块,由服务器完成数据的真正装载工作。并分析服务器返回的消息,必要时根据用户参数

    指定生成日志文件与错误数据文件。

  • 当进行数据导出时,dmfldr 客户端接收用户提交的命令与参数,分析控制文件,将用户要求转换成相应消息发

    送给服务器端的 dmfldr 模块。服务器解析并打包需要导出的数据,发送给 dmfldr 客户端,客户端将数据写入

    指定的数据文件,必要时根据用户参数指定生成日志文件。


2. dmfldr命令详解

2.1 dmfldr命令参数

安装好 DM 数据库管理系统后,在安装目录的“bin/”子目录下可找到 dmfldr 执行文件。

[dmdba@dmdb01 ~]$ /dm8/dmdbms/bin/dmfldr help

格式: ./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环境,是否只生成单个数据文件(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                打印帮助信息

[dmdba@dmdb01 ~]$ 


2.2 dmfldr使用样例:

/dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240  

control='/dm8/dmdbms/data/dmfldr/fldr.ctl'  log='/dm8/dmdbms/data/dmfldr/fldr.log' 

badfile='/dm8/dmdbms/data/dmfldr/fldr.bad'  

errors=999 load=10000 rows=500 character_code= ’SINGLE_BYTE ’


2.3 dmfldr控制文件样例

例:一个 dmfldr 控制文件的例子

OPTIONS

(

SKIP = 0    --跳过数据文件起始的逻辑行数,整型数值。默认的跳过起始行数为 0 行

ROWS = 50000    --每次提交的行数,整形数值。默认的提交行数为 50000 行

DIRECT = TRUE    --快速的载入模式

INDEX_OPTION = 2    --代表服务器在快速装载过程中不刷新二级索引数据,只在装载完成时重建所有二级索引;

)

LOAD DATA 

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

BADFILE '/opt/data/test1.bad'

INTO TABLE test1

FIELDS '|'              ---列分隔符,用户应当指定 FIELDS 或者 coldef_option 中的至少一种

(

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"

)


3. dmfldr命令实战测试

--测试1:使用 DATA参数指定数据文件

也可以使用 DATA 参数指定 dmfldr 的数据文件,数据文件路径的优先选择顺序为先控制文件,后参数选项。

如果控制文件中数据文件路径指定为‘*’,在命令行通过 DATA参数指定数据文件路径,

DATA 所指定的文件路径会替换‘*’。

1) 建表 TEST1

SQL> DROP TABLE ww.TEST1;

CREATE TABLE ww.TEST1(C1 INT,C2 INT,C3 DATE);操作已执行

已用时间: 39.348(毫秒). 执行号:1701.

SQL> 

操作已执行

已用时间: 3.974(毫秒). 执行号:1702.

SQL> 

2) 编辑数据文件 test1.txt,存放路径为/dm8/dmdbms/data/dmfldr/test1.txt,文件内容如下

1 1|2022-04-26

2 2|2022-04-25

3 3|2022-04-24

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

LOAD DATA

INFILE *

INTO TABLE ww.test1

FIELDS '|'

(

C1 TERMINATED BY ' ',

C2,

C3 DATE FORMAT 'yyyy-mm-dd'

)

4) 使用 dmfldr 进行数据载入

[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 

control=\'/dm8/dmdbms/data/dmfldr/test1.ctl\' data=\'/dm8/dmdbms/data/dmfldr/test1.txt\'

dmfldr V8

dmfldr: 

Copyright (c) 2011, 2015, Dameng.  All rights reserved.

控制文件:

加载行数:全部

每次提交服务器行数:50000

跳过行数:0

允许错误数:100

是否直接加载:Yes

是否插入自增列:No

数据是否已按照聚集索引排序:No

字符集:GBK

数据文件共1个:

/dm8/dmdbms/data/dmfldr/test1.txt

错误文件:fldr.bad

目标表:WW.TEST1

列名                                                                                                                           包装数据类型   终止

C1                                                                                                                               CHARACTER            WHT

C2                                                                                                                               CHARACTER            |

C3                                                                                                                               yyyy-mm-dd           |

行缓冲区数量: 2

任务线程数量: 2

3行记录已提交

目标表:WW.TEST1

3 行加载成功。

由于数据格式错误,0行 丢弃。

由于数据错误,0行 没有加载。

跳过的逻辑记录总数:0

读取的逻辑记录总数:3

拒绝的逻辑记录总数:0

用时:6.681(ms)

5) 检查数据是否导入成功

[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240

服务器[192.168.186.128:5240]:处于普通打开状态

登录使用时间 : 0.715(ms)

disql V8

SQL> select * from ww.test1;

行号     C1          C2          C3        

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

1          1           1           2022-04-26

2          2           2           2022-04-25

3          3           3           2022-04-24

已用时间: 2.364(毫秒). 执行号:1900.

SQL> 


--测试2:数据转换与错误数据文件

1) 建表 TEST2

SQL> DROP TABLE WW.TEST2;

CREATE TABLE WW.TEST2(C1 INT,C2 INT,C3 DATE);DROP TABLE WW.TEST2;

已用时间: 0.296(毫秒). 执行号:0.

SQL> 

操作已执行

已用时间: 14.244(毫秒). 执行号:1901.

SQL> 

2) 编辑数据文件 test2.txt,存放路径为/dm8/dmdbms/data/dmfldr/test2.txt,文件内容如下

1 1|2022-04-26

2 2|2022-04-25

3 3|2022-04-24

44|aaaa-bbb-ccc

3) 编辑控制文件 test2.ctl,存放路径为/dm8/dmdbms/data/dmfldr/test2.ctl,内容如下:

LOAD DATA

INFILE '/dm8/dmdbms/data/dmfldr/test2.txt'

INTO TABLE WW.test2

FIELDS '|'

(

C1 TERMINATED BY ' ',

C2,

C3 DATE FORMAT 'yyyy-mm-dd'

)

4) 使用 dmfldr 进行数据载入

[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 

control=\'/dm8/dmdbms/data/dmfldr/test2.ctl\' badfile=\'/dm8/dmdbms/data/dmfldr/test2.bad\'

dmfldr V8

dmfldr: 

Copyright (c) 2011, 2015, Dameng.  All rights reserved.

控制文件:

加载行数:全部

每次提交服务器行数:50000

跳过行数:0

允许错误数:100

是否直接加载:Yes

是否插入自增列:No

数据是否已按照聚集索引排序:No

字符集:GBK

数据文件共1个:

/dm8/dmdbms/data/dmfldr/test2.txt

错误文件:/dm8/dmdbms/data/dmfldr/test2.bad

目标表:WW.TEST2

列名                                                                                                                           包装数据类型   终止

C1                                                                                                                               CHARACTER            WHT

C2                                                                                                                               CHARACTER            |

C3                                                                                                                               yyyy-mm-dd           |

行缓冲区数量: 2

任务线程数量: 2

数据文件少列

3行记录已提交

目标表:WW.TEST2

3 行加载成功。

由于数据格式错误,1行 丢弃。

由于数据错误,0行 没有加载。

跳过的逻辑记录总数:0

读取的逻辑记录总数:4

拒绝的逻辑记录总数:0

用时:2.423(ms)

[dmdba@dmdb01 dmfldr]$ 

5) 查看错误数据文件 test2.bad,其内容如下

[dmdba@dmdb01 dmfldr]$ cat /dm8/dmdbms/data/dmfldr/test2.bad

dmfldr: 2022-04-27 13:04:54 WW->TEST2 44|aaaa-bbb-ccc

SQL> select * from ww.test2;

行号     C1          C2          C3        

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

1          1           1           2022-04-26

2          2           2           2022-04-25

3          3           3           2022-04-24

已用时间: 2.364(毫秒). 执行号:1900.

SQL> 


--测试3: 大字段数据导出

当 dmfldr 工作在导出模式即 MODE 为 OUT 时,dmfldr 生成大字段对应的数据文件名由 LOB_FILE_NAME 指定,

若未指定默认为 dmfldr.lob,文件存放于LOB_DIRECTORY 指定的目录,如果未指定 LOB_DIRECTORY 则存放于

指定的导出数据文件同一目录。


1) 建表 TEST3

SQL> DROP TABLE WW.TEST3;

CREATE TABLE WW.TEST3(C1 INT,C2 BLOB,C3 CLOB);DROP TABLE WW.TEST3;

已用时间: 0.535(毫秒). 执行号:0.

SQL> 

操作已执行

已用时间: 5.187(毫秒). 执行号:2100.

SQL> 

2) 插入数据

SQL> INSERT INTO WW.TEST3 VALUES(1,0XAB121032DE,'abcdefg');

DMSQL 过程已成功完成

已用时间: 0.801(毫秒). 执行号:2101.

SQL> INSERT INTO WW.TEST3 VALUES(2,0XAB121032DE,'abcdefg');

影响行数 1

已用时间: 0.423(毫秒). 执行号:2102.

SQL> COMMIT;

操作已执行

已用时间: 1.416(毫秒). 执行号:2103.

SQL> 

3) 编辑控制文件 test3.ctl,存放路径为/dm8/dmdbms/data/dmfldr/test3.ctl,内容如下:

LOAD DATA

INFILE '/dm8/dmdbms/data/dmfldr/test3.txt'

INTO TABLE ww.test3

FIELDS '|'

(

C1,

C2,

C3

)

4) 使用 dmfldr 进行导出数据

在这个例子中,指定了 LOB_DIRECTORY,而没有指定 LOB_FILE_NAME,导出的大字段数据文件将存放在 

LOB_DIRECTORY 指定的/dm8/dmdbms/data/dmfldr 目录,文件名为dmfldr.lob。

[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 

control=\'/dm8/dmdbms/data/dmfldr/test3.ctl\' LOB_DIRECTORY=\'/dm8/dmdbms/data/dmfldr/\' mode=\'out\'

dmfldr V8

2 rows is load out

总共导出 2 行数据

用时:819.980(ms)

说明:默认生成dmfldr.lob的文件


[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 

control=\'/dm8/dmdbms/data/dmfldr/test3.ctl\' LOB_DIRECTORY=\'/dm8/dmdbms/data/dmfldr/\' 

LOB_FILE_NAME=\'dmfldr3.lob\' mode=\'out\'

dmfldr V8

2 rows is load out

总共导出 2 行数据

用时:60.851(ms)

说明:也可以指定 LOB_FILE_NAME参数设置文件名称dmfldr3.lob

5) 检查 test3.txt 内容

[dmdba@dmdb01 dmfldr]$ cat test3.txt 

1|dmfldr.lob:0:5|dmfldr.lob:5:7

2|dmfldr.lob:12:5|dmfldr.lob:17:7

1|dmfldr3.lob:0:5|dmfldr3.lob:5:7

2|dmfldr3.lob:12:5|dmfldr3.lob:17:7

6) 检查生成的lob文件

[dmdba@dmdb01 dmfldr]$ ls -l dmfldr*

-rw-r--r-- 1 dmdba dinstall   24 Apr 27 13:21 dmfldr3.lob

-rw-r--r-- 1 dmdba dinstall   24 Apr 27 13:18 dmfldr.lob


--测试4:DIRECT 为 为 TRUE  时大字段数据的载入

1) 建表 TEST4

SQL> DROP TABLE WW.TEST4;

已用时间: 0.844(毫秒). 执行号:0.

SQL> CREATE TABLE WW.TEST4(C1 INT,C2 BLOB,C3 CLOB);

操作已执行

已用时间: 4.929(毫秒). 执行号:2500.

SQL> 

2) 编辑数据文件 test4.txt,存放路径为 DM 服务器所在主库的/dm8/dmdbms/data/dmfldr/test4.txt,文件内容如下

1|testblob.txt:0:10|testclob.txt:0:10

2|testblob.txt:10:20|testclob.txt:10:20

3|testblob.txt:20:30|testclob.txt:20:30

其中,testblob.txt、testclob.txt 为文本文件,长度大于 30 字节,存放路径为/dm8/dmdbms/data/dmfldr/。

[dmdba@dmdb01 dmfldr]$ cat testblob.txt 

1|testblobtestblobtestblobtestblob1|testblobtestblobtestblobtestblob1

2|testblobtestblobtestblobtestblob2|testblobtestblobtestblobtestblob2

3|testblobtestblobtestblobtestblob3|testblobtestblobtestblobtestblob3

[dmdba@dmdb01 dmfldr]$ cat testclob.txt 

1|testclobtestclobtestclobtestclob1|testclobtestclobtestclobtestclob1

2|testclobtestclobtestclobtestclob2|testclobtestclobtestclobtestclob2

3|testclobtestclobtestclobtestclob3|testclobtestclobtestclobtestclob3

[dmdba@dmdb01 dmfldr]$ 

3) 编辑控制文件 test4.ctl,存放路径为/dm8/dmdbms/data/dmfldr/test4.ctl,内容如下:

OPTIONS

(

SKIP = 0

DIRECT = TRUE

INDEX_OPTION = 2

)

LOAD DATA

INFILE '/dm8/dmdbms/data/dmfldr/test4.txt'

BADFILE '/dm8/dmdbms/data/dmfldr/test4.bad'

INTO TABLE ww.test4

FIELDS '|'

(

C1,

C2,

C3

)

4) 使用 dmfldr 进行导入数据

[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 

control=\'/dm8/dmdbms/data/dmfldr/test4.ctl\' LOB_DIRECTORY=\'/dm8/dmdbms/data/dmfldr/\' 

LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_test4.log\'

dmfldr V8

dmfldr: 

Copyright (c) 2011, 2015, Dameng.  All rights reserved.

控制文件:

加载行数:全部

每次提交服务器行数:50000

跳过行数:0

允许错误数:100

是否直接加载:Yes

是否插入自增列:No

数据是否已按照聚集索引排序:No

字符集:GBK

数据文件共1个:

/dm8/dmdbms/data/dmfldr/test4.txt

错误文件:/dm8/dmdbms/data/dmfldr/test4.bad

目标表:WW.TEST4

列名                                                                                                                           包装数据类型   终止

C1                                                                                                                               CHARACTER            |

C2                                                                                                                               CHARACTER            |

C3                                                                                                                               CHARACTER            |

行缓冲区数量: 2

任务线程数量: 2

3行记录已提交

目标表:WW.TEST4

3 行加载成功。

由于数据格式错误,0行 丢弃。

由于数据错误,0行 没有加载。

跳过的逻辑记录总数:0

读取的逻辑记录总数:3

拒绝的逻辑记录总数:0

用时:3.716(ms)

5) 检查表内容

[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240

服务器[192.168.186.128:5240]:处于普通打开状态

登录使用时间 : 0.773(ms)

disql V8

SQL> select * from ww.test4;

行号     C1          C2                                                             C3                            

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

1      1     0x317C74657374626C6F62                                                                 1|testclob

2      2     0x74657374626C6F6274657374626C6F6274657374                          testclobtestclobtest

3      3     0x7374626C6F6274657374626C6F62317C74657374626C6F6274657374626C stclobtestclob1|testclobtestcl

已用时间: 1.978(毫秒). 执行号:3600.

SQL> 


--测试5:DIRECT为 FALSE  时大字段数据的载入

当 MODE 为 IN 且 DIRECT 为 FALSE 时,数据文件中大字段列数据即字段内容。

BLOB_TYPE 参数指定 BLOB 列内容为十六进制或者字符串:

  BLOB_TYPE 为 HEX_CHAR 时,数据文件中 BLOB 列当作为十六进制内容;

  BLOB_TYPE 为 HEX 时,数据文件中 BLOB 列为字符串形式内容,导入后会转换为十六进制。

BLOB_TYPE 参数只对 DIRECT 为 FALSE 时有效,默认为 HEX_CHAR。

例 1:

1) 建表 TEST5

SQL> CREATE TABLE WW.TEST5(C1 INT,C2 BLOB,C3 CLOB);

操作已执行

已用时间: 8.982(毫秒). 执行号:3700.

SQL> 

2) 编辑数据文件 test5.txt,存放路径为/dm8/dmdbms/data/dmfldr/test5.txt,文件内容如下

1|0x12d3c8a7|abcdefg

2|0x12a4cbac|hijlkmn

3|0x22d3c8b3|adefhjd

3) 编辑控制文件 test5.ctl,存放路径为/dm8/dmdbms/data/dmfldr/test5.ctl,内容如下:

OPTIONS

(

SKIP = 0

DIRECT = FALSE

INDEX_OPTION = 2

)

LOAD DATA

INFILE '/dm8/dmdbms/data/dmfldr/test5.txt'

BADFILE '/dm8/dmdbms/data/dmfldr/test5.bad'

INTO TABLE ww.test5

FIELDS '|'

(

C1,

C2,

C3

)

4) 使用 dmfldr 进行导入数据,BLOB_TYPE 为 HEX_CHAR

[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 

control=\'/dm8/dmdbms/data/dmfldr/test5.ctl\' LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_test5.log\' 

direct=false blob_type=\'hex_char\'

dmfldr V8

dmfldr: 

Copyright (c) 2011, 2015, Dameng.  All rights reserved.

控制文件:

加载行数:全部

每次提交服务器行数:50000

跳过行数:0

允许错误数:100

是否直接加载:No

是否插入自增列:No

数据是否已按照聚集索引排序:No

字符集:GBK

数据文件共1个:

/dm8/dmdbms/data/dmfldr/test5.txt

错误文件:/dm8/dmdbms/data/dmfldr/test5.bad

目标表:WW.TEST5

列名                                                                                                                           包装数据类型   终止

C1                                                                                                                               CHARACTER            |

C2                                                                                                                               CHARACTER            |

C3                                                                                                                               CHARACTER            |

3 rows processed.

目标表:WW.TEST5

3 行加载成功。

由于数据格式错误,0行 丢弃。

由于数据错误,0行 没有加载。

跳过的逻辑记录总数:0

读取的逻辑记录总数:3

拒绝的逻辑记录总数:0

用时:2.676(ms)

[dmdba@dmdb01 dmfldr]$ 

5) 查询表数据

[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240

服务器[192.168.186.128:5240]:处于普通打开状态

登录使用时间 : 0.853(ms)

disql V8

SQL> select * from ww.test5;

行号     C1          C2         C3     

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

1          1           0x12D3C8A7 abcdefg

2          2           0x12A4CBAC hijlkmn

3          3           0x22D3C8B3 adefhjd

已用时间: 2.366(毫秒). 执行号:3900.

SQL> 


例 2:

步骤 1)、2)、3)同例 1

4) 使用 dmfldr 进行导入数据,BLOB_TYPE 为 HEX

[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 

control=\'/dm8/dmdbms/data/dmfldr/test5.ctl\' LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_test5_1.log\' 

direct=false blob_type=\'HEX\'

dmfldr V8

dmfldr: 

Copyright (c) 2011, 2015, Dameng.  All rights reserved.

控制文件:

加载行数:全部

每次提交服务器行数:50000

跳过行数:0

允许错误数:100

是否直接加载:No

是否插入自增列:No

数据是否已按照聚集索引排序:No

字符集:GBK

数据文件共1个:

/dm8/dmdbms/data/dmfldr/test5.txt

错误文件:/dm8/dmdbms/data/dmfldr/test5.bad

目标表:WW.TEST5

列名                                                                                                                           包装数据类型   终止

C1                                                                                                                               CHARACTER            |

C2                                                                                                                               CHARACTER            |

C3                                                                                                                               CHARACTER            |

3 rows processed.

目标表:WW.TEST5

3 行加载成功。

由于数据格式错误,0行 丢弃。

由于数据错误,0行 没有加载。

跳过的逻辑记录总数:0

读取的逻辑记录总数:3

拒绝的逻辑记录总数:0

用时:2.353(ms)

5) 查询表数据

[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240

服务器[192.168.186.128:5240]:处于普通打开状态

登录使用时间 : 1.096(ms)

disql V8

SQL> select * from ww.test5;     

行号     C1          C2                     C3     

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

1          1           0x30783132643363386137 abcdefg

2          2           0x30783132613463626163 hijlkmn

3          3           0x30783232643363386233 adefhjd

已用时间: 2.225(毫秒). 执行号:4100.

SQL> 


--测试6:自增列装载

自增列是比较特殊的列,为了保证数据库中自增列列值的正确性,用户在进行数据载入时需要特别注意。

1) 当 DIRECT 参数为 FALSE 时, dmfldr 将把从数据文件中读取的自增列值作为目标值插入数据库表中,

用户应当保证每一行的自增列的值符合自增列的规则,否则将造成数据混乱。

2) 当 DIRECT 参数为 TRUE 时, dmfldr 提供了 SET_IDENTITY 参数(默认为 FALSE)对数据载入时自增列的处理进行设置:

(1)如果指定 SET_IDENTITY 选项值为 TRUE,则 dmfldr 将把从数据文件中读取的自增列值作为目标值插入数据库表中,

用户应当保证每一行的自增列的值符合自增列的规则,否则将造成数据混乱;

(2)如果 SET_IDENTITY 选项值设置为 FALSE,则 dmfldr 将忽略数据文件中对应自增列的值,服务器将根据自增列定义

和表中已有数据自动生成自增列的值插入每一行的对应列。


例1:DIRECT=TRUE,SET_IDENTITY=FALSE

1)创建测试表

DROP TABLE ww.TEST6;

CREATE TABLE ww.TEST6(C1 INT IDENTITY(1,1),C2 VARCHAR);

INSERT INTO  ww.TEST6(C2) VALUES('AAA');

INSERT INTO  ww.TEST6(C2) VALUES('BBB');

COMMIT;


[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240

服务器[192.168.186.128:5240]:处于普通打开状态

登录使用时间 : 0.891(ms)

disql V8

SQL> CREATE TABLE ww.TEST6(C1 INT IDENTITY(1,1),C2 VARCHAR);

操作已执行

已用时间: 4.538(毫秒). 执行号:4200.

SQL> INSERT INTO  ww.TEST6(C2) VALUES('AAA');

INSERT INTO  ww.TEST6(C2) VALUES('BBB');

COMMIT;影响行数 1

已用时间: 0.601(毫秒). 执行号:4201.

SQL> 影响行数 1

已用时间: 0.169(毫秒). 执行号:4202.

SQL> 

操作已执行

已用时间: 0.915(毫秒). 执行号:4203.

SQL> 

---查询

SQL> select *from ww.TEST6;

行号     C1          C2 

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

1          1           AAA

2          2           BBB

已用时间: 1.071(毫秒). 执行号:4204.

SQL> 

2)编辑数据文件TEST6.txt,存放路径/dm8/dmdbms/data/dmfldr/,内容如下:

2|aaa

3|bbb

4|ccc

3)编辑控制文件TEST6.ctl,存放路径/dm8/dmdbms/data/dmfldr/,内容如下:

OPTIONS

(

SKIP = 0

ROWS = 50000

INDEX_OPTION = 2

DIRECT=TRUE

SET_IDENTITY=FALSE

)

LOAD DATA

INFILE '/dm8/dmdbms/data/dmfldr/TEST6.txt'

BADFILE '/dm8/dmdbms/data/dmfldr/TEST6.bad'

INTO TABLE ww.TEST6

FIELDS '|'

(C1,

C2

)

4)装载数据(DIRECT=TRUE SET_IDENTITY=FALSE)

[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 

control=\'/dm8/dmdbms/data/dmfldr/TEST6.ctl\' LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_TEST6.log\' 

dmfldr V8

dmfldr: 

Copyright (c) 2011, 2015, Dameng.  All rights reserved.

控制文件:

加载行数:全部

每次提交服务器行数:50000

跳过行数:0

允许错误数:100

是否直接加载:Yes

是否插入自增列:No

数据是否已按照聚集索引排序:No

字符集:GBK

数据文件共1个:

/dm8/dmdbms/data/dmfldr/TEST6.txt

错误文件:/dm8/dmdbms/data/dmfldr/TEST6.bad

目标表:WW.TEST6

列名                                                                                                                           包装数据类型   终止

C1                                                                                                                               CHARACTER            |

C2                                                                                                                               CHARACTER            |

行缓冲区数量: 2

任务线程数量: 2

3行记录已提交

目标表:WW.TEST6

3 行加载成功。

由于数据格式错误,0行 丢弃。

由于数据错误,0行 没有加载。

跳过的逻辑记录总数:0

读取的逻辑记录总数:3

拒绝的逻辑记录总数:0

用时:1.435(ms)

5)检查导入后表信息

[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240

服务器[192.168.186.128:5240]:处于普通打开状态

登录使用时间 : 0.666(ms)

disql V8

SQL> select * from ww.TEST6;

行号     C1          C2 

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

1          1           AAA

2          2           BBB

3          3           aaa

4          4           bbb

5          5           ccc

已用时间: 1.263(毫秒). 执行号:4400.

SQL> 


例2:DIRECT=TRUE,SET_IDENTITY=TRUE

重复上面(1)(2)(3)步骤;

4)装载数据 DIRECT=TRUE SET_IDENTITY=TRUE

[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 

control=\'/dm8/dmdbms/data/dmfldr/TEST6.ctl\' LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_TEST6_1.log\' 

DIRECT=TRUE SET_IDENTITY=TRUE

dmfldr V8

dmfldr: 

Copyright (c) 2011, 2015, Dameng.  All rights reserved.

控制文件:

加载行数:全部

每次提交服务器行数:50000

跳过行数:0

允许错误数:100

是否直接加载:Yes

是否插入自增列:Yes

数据是否已按照聚集索引排序:No

字符集:GBK

数据文件共1个:

/dm8/dmdbms/data/dmfldr/TEST6.txt

错误文件:/dm8/dmdbms/data/dmfldr/TEST6.bad

目标表:WW.TEST6

列名                                                                                                                           包装数据类型   终止

C1                                                                                                                               CHARACTER            |

C2                                                                                                                               CHARACTER            |

行缓冲区数量: 2

任务线程数量: 2

3行记录已提交

目标表:WW.TEST6

3 行加载成功。

由于数据格式错误,0行 丢弃。

由于数据错误,0行 没有加载。

跳过的逻辑记录总数:0

读取的逻辑记录总数:3

拒绝的逻辑记录总数:0

用时:1.513(ms)

5)查询数据

[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240

服务器[192.168.186.128:5240]:处于普通打开状态

登录使用时间 : 0.743(ms)

disql V8

SQL> select * from ww.TEST6;

行号     C1          C2 

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

1          1           AAA

2          2           BBB

3          2           aaa

4          3           bbb

5          4           ccc

已用时间: 0.857(毫秒). 执行号:4600.

SQL> 

注意: 在表中有自增列的情况下装载时,dmfldr参数direct=false效果与direct=true set_identity=true相同,

都是将把从dmfldr数据文件中读取的自增列值作为目标值插入数据库表中,这种情况需要保证每一行的自增列

的值符合自增列的规则,否则将造成数据混乱。


--测试7:空值处理

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

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

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


例1:导入NULL_MODE=TRUE

1)创建测试表TEST7

drop table ww.TEST7;

create table ww.TEST7(c1 int,c2 varchar(20));


SQL> create table ww.TEST7(c1 int,c2 varchar(20));

操作已执行

已用时间: 11.521(毫秒). 执行号:4700.

SQL> 

2)编辑数据文件TEST7.txt,存放路径/dm8/dmdbms/data/dmfldr,内容如下:

1|aaa

2|NULL

3|null

3)编辑控制文件TEST7.ctl,存放路径/dm8/dmdbms/data/dmfldr,内容如下:

OPTIONS

(

SKIP = 0

ROWS = 50000

INDEX_OPTION = 2

)

LOAD DATA

INFILE '/dm8/dmdbms/data/dmfldr/TEST7.txt'

BADFILE '/dm8/dmdbms/data/dmfldr/TEST7.bad'

INTO table ww.TEST7

FIELDS '|'

(C1,

C2

)

4)装载数据 null_mode=true

[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 

control=\'/dm8/dmdbms/data/dmfldr/TEST7.ctl\' LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_TEST7.log\' 

null_mode=true 

dmfldr V8

dmfldr: 

Copyright (c) 2011, 2015, Dameng.  All rights reserved.

控制文件:

加载行数:全部

每次提交服务器行数:50000

跳过行数:0

允许错误数:100

是否直接加载:Yes

是否插入自增列:No

数据是否已按照聚集索引排序:No

字符集:GBK

数据文件共1个:

/dm8/dmdbms/data/dmfldr/TEST7.txt

错误文件:/dm8/dmdbms/data/dmfldr/TEST7.bad

目标表:WW.TEST7

列名                                                                                                                           包装数据类型   终止

C1                                                                                                                               CHARACTER            |

C2                                                                                                                               CHARACTER            |

行缓冲区数量: 2

任务线程数量: 2

3行记录已提交

目标表:WW.TEST7

3 行加载成功。

由于数据格式错误,0行 丢弃。

由于数据错误,0行 没有加载。

跳过的逻辑记录总数:0

读取的逻辑记录总数:3

拒绝的逻辑记录总数:0

用时:1.608(ms)

5)查看数据

[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240

服务器[192.168.186.128:5240]:处于普通打开状态

登录使用时间 : 0.738(ms)

disql V8

SQL> select * from ww.TEST7;

行号     C1          C2  

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

1          1           aaa

2          2           NULL

3          3           NULL

已用时间: 1.383(毫秒). 执行号:4900.

SQL> 

SQL> select c1 ,ifnull(c2,'null value') from ww.TEST7;

行号     C1          "IFNULL"(C2,'nullvalue')

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

1          1           aaa

2          2           null value

3          3           null value

已用时间: 0.884(毫秒). 执行号:4901.

SQL> 


例2:导入NULL_MODE=FALSE

执行上面 1)2)3)步骤;

4)装载数据 null_mode=false

[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 

control=\'/dm8/dmdbms/data/dmfldr/TEST7.ctl\' LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_TEST7_1.log\' 

null_mode=false 

dmfldr V8

dmfldr: 

Copyright (c) 2011, 2015, Dameng.  All rights reserved.

控制文件:

加载行数:全部

每次提交服务器行数:50000

跳过行数:0

允许错误数:100

是否直接加载:Yes

是否插入自增列:No

数据是否已按照聚集索引排序:No

字符集:GBK

数据文件共1个:

/dm8/dmdbms/data/dmfldr/TEST7.txt

错误文件:/dm8/dmdbms/data/dmfldr/TEST7.bad

目标表:WW.TEST7

列名                                                                                                                           包装数据类型   终止

C1                                                                                                                               CHARACTER            |

C2                                                                                                                               CHARACTER            |

行缓冲区数量: 2

任务线程数量: 2

3行记录已提交

目标表:WW.TEST7

3 行加载成功。

由于数据格式错误,0行 丢弃。

由于数据错误,0行 没有加载。

跳过的逻辑记录总数:0

读取的逻辑记录总数:3

拒绝的逻辑记录总数:0

用时:1.192(ms)

5)检查导入后表信息

[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240

服务器[192.168.186.128:5240]:处于普通打开状态

登录使用时间 : 0.631(ms)

disql V8

SQL> select * from ww.TEST7;

行号     C1          C2  

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

1          1           aaa

2          2           NULL

3          3           null

已用时间: 1.326(毫秒). 执行号:5100.

SQL> select c1 ,ifnull(c2,'null value') from ww.TEST7;

行号     C1          "IFNULL"(C2,'nullvalue')

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

1          1           aaa

2          2           NULL

3          3           null

已用时间: 0.607(毫秒). 执行号:5101.

SQL> 

注意:可以看到当设置null_mode=false时,装载数据时"NULL"、“null"会被作为"NULL”、"null"两个字符串插入到表中;


例3:导出NULL_MODE=TRUE

执行"导入NULL_MODE=TRUE"的所有步骤,然后修改控制文件内容如下:

OPTIONS

(

SKIP = 0

ROWS = 50000

INDEX_OPTION = 2

)

LOAD DATA

INFILE '/dm8/dmdbms/data/dmfldr/TEST7_1.txt' 

BADFILE '/dm8/dmdbms/data/dmfldr/TEST7_1.bad'

INTO table ww.TEST7

FIELDS '|'

(C1,

C2

)

4)执行导出 NULL_MODE=TRUE

[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 

control=\'/dm8/dmdbms/data/dmfldr/TEST7_1.ctl\' LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_TEST7_3.log\' 

null_mode=TRUE mode=\'out\'

dmfldr V8

3 rows is load out

总共导出 3 行数据

用时:59.265(ms)

[dmdba@dmdb01 dmfldr]$ 

5)查看导出文件内容

[dmdba@dmdb01 dmfldr]$ cat /dm8/dmdbms/data/dmfldr/TEST7_1.txt 

1|aaa

2|NULL

3|NULL

[dmdba@dmdb01 dmfldr]$ 

注意:可以看到导出值为NULL字符串。


例4:导出NULL_MODE=FALSE

执行"导入NULL_MODE=TRUE"的所有步骤,然后修改控制文件内容如下:

OPTIONS

(

SKIP = 0

ROWS = 50000

INDEX_OPTION = 2

)

LOAD DATA

INFILE '/dm8/dmdbms/data/dmfldr/TEST7_2.txt' 

BADFILE '/dm8/dmdbms/data/dmfldr/test_2.bad'

INTO table ww.TEST7

FIELDS '|'

(C1,

C2

)

4)执行导出 NULL_MODE=FALSE

[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 

control=\'/dm8/dmdbms/data/dmfldr/TEST7_2.ctl\' LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_TEST7_3.log\' 

null_mode=FALSE mode=\'out\'

dmfldr V8

3 rows is load out

总共导出 3 行数据

用时:66.175(ms)

[dmdba@dmdb01 dmfldr]$ 

5)查看导出文件内容

[dmdba@dmdb01 dmfldr]$ cat TEST7_2.txt 

1|aaa

2|

3|

[dmdba@dmdb01 dmfldr]$ 

注意:可以看到,设置null_mode=false,导出文件内容值为空字符串。


dmfldr使用限制

(1)不支持向临时表、外部表装载数据

(2)不支持向系统表装载数据

(3)不支持向带有位图索引的表装载数据

(4)不支持向带有函数索引的表装载数据

(5)不支持向带有全文索引的表装载数据

(6)不支持向 DCP 代理装载数据

(7)dmfldr装载时,对约束进行检查.


--测试8:多表装载

通过在控制文件中指定多个 INTO TABLE 子句,可以将一批数据同时向多个表进行装载。每个 INTO TABLE 子句中

都可以指定 WHEN 过滤条件、FIELDS 子句和列定义子句。

对于多表装载的使用需注意以下几点:

  对于第二个及其之后的 INTO TABLE 子句,在其 coldef_option 中,必须为所有列指定 POSITION 选项;

  在 INTO TABLE 子句的目标表中,如果目标表各不相同,则一个批次就可以完成装载完成(不管含有多少表,

只需扫描一次数据文件即可);如果含有重复的目标表,则相同的表需要分批次导入(每当遇到相同的表时,

就需要再扫描一遍源文件。N 个重复的表,就需要扫描 N 次源文件)。


1) 建表 TEST1、TEST2

DROP TABLE TEST1;

DROP TABLE TEST2;

CREATE TABLE TEST1(C1 INT,C2 INT);

CREATE TABLE TEST2(C1 INT,C2 INT);


SQL> DROP TABLE TEST1;

DROP TABLE TEST2;

CREATE TABLE TEST1(C1 INT,C2 INT);

CREATE TABLE TEST2(C1 INT,C2 INT);DROP TABLE TEST1;

已用时间: 0.414(毫秒). 执行号:0.

SQL> 操作已执行

已用时间: 11.541(毫秒). 执行号:7106.

SQL> 操作已执行

已用时间: 3.193(毫秒). 执行号:7107.

SQL> 

操作已执行

已用时间: 12.095(毫秒). 执行号:7108.

SQL> 

2) 编辑数据文件 TEST8.txt,存放路径为/dm8/dmdbms/data/dmfldr/TEST8.txt,文件内容如下

1,2

2,3

3,2

4,8

9,1

3) 编辑控制文件 TEST8.ctl,存放路径为/dm8/dmdbms/data/dmfldr/TEST8.ctl,内容如下:

LOAD DATA

INFILE '/dm8/dmdbms/data/dmfldr/TEST8.txt'

INTO TABLE test1

WHEN C1 != '1'

FIELDS ','

(

c1 position (1:1),

c2 position (3:3)

)

INTO TABLE test2

WHEN (3:3) = '2' AND c1 != '3'

FIELDS ','

(

c1 position (1:1),

c2 position (3:3)

)

4) 使用 dmfldr 进行数据载入

[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 

control=\'/dm8/dmdbms/data/dmfldr/TEST8.ctl\'

dmfldr V8

dmfldr: 

Copyright (c) 2011, 2015, Dameng.  All rights reserved.

控制文件:

加载行数:全部

每次提交服务器行数:50000

跳过行数:0

允许错误数:100

是否直接加载:Yes

是否插入自增列:No

数据是否已按照聚集索引排序:No

字符集:GBK

数据文件共1个:

/dm8/dmdbms/data/dmfldr/TEST8.txt

错误文件:fldr.bad

目标表:TEST1

列名                                                                                                                           包装数据类型   终止

C1                                                                                                                               CHARACTER            ,

C2                                                                                                                               CHARACTER            ,

行缓冲区数量: 2

任务线程数量: 2

数据文件共1个:

/dm8/dmdbms/data/dmfldr/TEST8.txt

错误文件:fldr.bad

目标表:TEST2

列名                                                                                                                           包装数据类型   终止

C1                                                                                                                               CHARACTER            ,

C2                                                                                                                               CHARACTER            ,

行缓冲区数量: 2

任务线程数量: 2

4行记录已提交

1行记录已提交

目标表:TEST1

4 行加载成功。

由于数据格式错误,0行 丢弃。

由于数据错误,0行 没有加载。

跳过的逻辑记录总数:0

读取的逻辑记录总数:5

拒绝的逻辑记录总数:0

用时:2.934(ms)

目标表:TEST2

1 行加载成功。

由于数据格式错误,0行 丢弃数据错误,DM8之数0行 没有加载。

跳过的逻辑记录总数:0

读取的逻辑记录总数:5

拒绝的逻辑记录总数:0

用时:2.934(ms)

[dmdba@dmdb01 dmfldr]$ 

5) 查看表 TEST1 和 TEST2 的数据如下

SQL> SELECT * FROM TEST1;

行号     C1          C2         

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

1          2           3

2          3           2

3          4           8

4          9           1

已用时间: 0.533(毫秒). 执行号:7109.

SQL> 

SQL> SELECT * FROM TEST2;

行号     C1          C2         

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

1          1           2

已用时间: 0.638(毫秒). 执行号:7110.

SQL> 


---- 测试9:个性化设置

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

每次提交的行数。

    SKIP 参数用来设置跳过数据文件起始的逻辑行数,整形数值。默认的跳过起始行数为0 行。如果用户指定了多个文件,

且起始文件中的行数不足 SKIP 所指定的行数,则dmfldr 工具会扫描下一个文件直至累加的行数等于 SKIP 所设置的行数

或者所有文件都已扫描结束。

    LOAD 参数用来设置装载的最大行数,整形数值。默认的最大装载行数为数据文件中的所有行数。LOAD 指定的值不

包括 SKIP 指定的跳过的行数。

    ROWS 参数用来设置每次提交的行数,整形数值。默认的提交行数为 50000 行。提交行数的值表示提交到服务器的

行数,并不一定代表按照数据文件中的数据顺序的行数。用户可以根据实际情况调整每次提交的行数,以达到性能的最

佳点。ROWS 参数作用于 MODE 为IN 的情况下,当 MODE 为 OUT 时无效。

例如:

1) 建表 TEST9

DROP TABLE ww.TEST9;

CREATE TABLE ww.TEST9(C1 INT,C2 VARCHAR);

SQL> CREATE TABLE ww.TEST9(C1 INT,C2 VARCHAR);

操作已执行

已用时间: 33.578(毫秒). 执行号:500.

SQL> 

2) 编辑数据文件 TEST9.txt,存放路径为/dm8/dmdbms/data/dmfldr/TEST9.txt,文件内容如下

1|aaa

2|bbb

3|ccc

4|ddd

5|eee

6|fff

7|ggg

8|hhh

9|iii

10|jjj

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

LOAD DATA

INFILE '/dm8/dmdbms/data/dmfldr/TEST9.txt'

INTO TABLE ww.TEST9

FIELDS '|'

(

C1,

C2

)

4) 使用 dmfldr 进行数据载入

[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 

control=\'/dm8/dmdbms/data/dmfldr/TEST9.ctl\' skip=3 load=5

dmfldr V8

dmfldr: 

Copyright (c) 2011, 2015, Dameng.  All rights reserved.

控制文件:

加载行数:5

每次提交服务器行数:50000

跳过行数:3

允许错误数:100

是否直接加载:Yes

是否插入自增列:No

数据是否已按照聚集索引排序:No

字符集:GBK

数据文件共1个:

/dm8/dmdbms/data/dmfldr/TEST9.txt

错误文件:fldr.bad

目标表:WW.TEST9

列名                                                                                                                           包装数据类型   终止

C1                                                                                                                               CHARACTER            |

C2                                                                                                                               CHARACTER            |

行缓冲区数量: 2

任务线程数量: 2

5行记录已提交

目标表:WW.TEST9

5 行加载成功。

由于数据格式错误,0行 丢弃。

由于数据错误,0行 没有加载。

跳过的逻辑记录总数:3

读取的逻辑记录总数:5

拒绝的逻辑记录总数:0

用时:4.863(ms)

[dmdba@dmdb01 dmfldr]$ 

5) 查看表 TEST 的数据,载入时跳过了数据文件的前 3 行数据,且只载入了 5 条数据。

[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240

服务器[192.168.186.128:5240]:处于普通打开状态

登录使用时间 : 1.070(ms)

disql V8

SQL> select * from ww.TEST9;

行号     C1          C2 

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

1          4           ddd

2          5           eee

3          6           fff

4          7           ggg

5          8           hhh

已用时间: 9.083(毫秒). 执行号:800.

SQL> 


达梦数据库技术论坛:

请使用浏览器的分享功能分享到微信等