dmfldr 使用手册
Posted yangeoooo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dmfldr 使用手册相关的知识,希望对你有一定的参考价值。
dmfldr USERID=SYSDBA/SYSDBA CONTROL=‘c:\\fldr.ctl’
2.1 启动 dmfldr
USERID 和 CONTROL 是启动 dmfldr 必须要指定的参数,且 USERID 必须是第一个参数,CONTROL 必须是第二个参数。
[dmdba@ora79 ~]$ dmfldr help
Format: ./dmfldr KEYWORD=value
Example: ./dmfldr SYSDBA/SYSDBA CONTROL=’/opt/data/fldr.ctl’
USERID should be the first parameter
CONTROL should be the second parameter
String type parameter should be quoted
Keyword Explanation(default)
USERID USER/PWD FORMAT:USER/PWD@SERVER:PORT#SSL_PATH@SSL_PWD
CONTROL Control file, string type
LOG Log file, string type (fldr.log)
BADFILE For record error data, string type (fldr.bad)
SKIP Skiped rows first (0)
LOAD Rows need to be loaded (ALL)
ROWS Commit frequency (50000)
DIRECT Whether to use fast loader (TRUE)
SET_IDENTITY Where to insert identity column (FALSE)
SORTED Whether the data is sorted by cluster index (FALSE)
INDEX_OPTION Index option (1)
1 Do not flash the second level index,data sorted
by index first, insert the data to index after loading
2 Do not flash the second level index, rebuild all second
level index after loading
3 flash the second level index, insert the data to index
data loading
ERRORS The max error count allowed (100)
CHARACTER_CODE Character code, string type (GBK, UTF-8, SINGLE_BYTE, EUC-KR)
MODE Load mode,string type, IN for load in, OUT for load out,
OUTORA for load out ORACLE (IN)
CLIENT_LOB Client lob directory (FALSE)
LOB_DIRECTORY Directory for put lob data
LOB_FILE_NAME Name of lob file, only valid in out mode (dmfldr.lob)
BUFFER_NODE_SIZE Read buffer size (10), range 1~2048
READ_ROWS Max rows one task node can process (100000),
max 2^26-10000
NULL_MODE NULL string whether to be NULL when load in
Empty string whether to be NULL when load out (FALSE)
NULL_STR String that been load in as a null value
SEND_NODE_NUMBER Send ode number when running (20), value range 16~65535
TASK_THREAD_NUMBER Thread number processing data, same as the number of processer
cores in default,value range 1~128
BLDR_NUM server BLDR count (64), value range 1~1024
BDTA_SIZE Size of bdta (5000), range 100~10000
COMPRESS_FLAG Whether compress bdta (FALSE)
MPP_CLIENT In mpp environment, client distribute (TRUE)
SINGLE_FILE Whether generate only one datafile (FALSE)
LAN_MODE In mpp environment, whether to load data using local area network (FALSE)
UNREP_CHAR_MODE Unrepresentable characters option(0),for option(0) to use the replacement char
SILENT Suppress messages during run (FALSE)
BLOB_TYPE BLOB data type,string type HEX or HEX_CHAR (HEX_CHAR)
only valid in direct=false mode
OCI_DIRECTORY Directory for OCI
DATA Path to data file
ENABLE_CLASS_TYPE The CLASS type is allowed (FALSE)
FLUSH_FLAG Flush data to disk immediately (FALSE)
IGNORE_BATCH_ERRORS Whether to ignore error data while loading (FALSE)
SINGLE_HLDR_HP Whether to use a single hldr for loading huge horizontal partition table (TRUE)
EP MPP sites list which data will be send to
PARALLEL Do parallel load(FALSE)
SQL Use user-defined SQL query for data export
HELP Show this help info
2.3 dmfldr 参数简介
USERID 用户密码
CONTROL 控制文件的路径,
LOG 日志文件路径fldr.log
NULL_STR 指定数据文件中 NULL 值的表示字符串
BADFILE 错误数据的文件路径fldr.bad
SKIP 跳过数据文件起始的逻辑行数
LOAD 装载的最大行数
ROWS 每次提交的行数 50000 行
DIRECT 数据装载方式默认为 TRUE 。当为 FALSE 时,dmfldr 选择普通的插入方式装载数据,可以保证数据的正确性和约束的有效性,效率比前者要低。
SET_IDENTITY 设置自增列选项,布尔值。默认为 FALSE
SORTED 数据是否已经按照聚集索引排序,布尔值。默认为 FALSE。
INDEX_OPTION 索引的设置选项,整形数值。默认为 1先不刷新二级索引
ERRORS 最大的容错个数,整形数值。默认为 100
CHARACTER_CODE 数据文件中数据的编码格式,字符串类型。默认为 GBK。CHARACTER_CODE 的可选项有 GBK、GB18080、UTF-8、SINGLE_BYTE 和 EUC-KR 五种
MODE dmfldr 的装载模式,字符串类型。默认值为 IN。MODE 的可选项有 IN、OUT 和OUTORA 三种。OUTORA 模式表示导出 ORACLE 表的数据,此模式下暂不支持带有大字段表的导出。
CLIENT_LOB 指明 LOB_DIRECTORY 表示的目录是否是客户端本地目录
LOB_DIRECTORY 指明 dmfldr 使用的大字段数据存放的目录,字符串类型。
LOB_FILE_NAME 指明 dmfldr 导出大字段数据的文件名,字符串类型,默认为 dmfldr.lob。
BLOB_TYPE 指定 BLOB 数据值的实际类型
BUFFER_NODE_SIZE 指定读取文件缓冲区页大小,整数类型
READ_ROWS 指定读取缓冲区每次读取的最大行数
NULL_MODE 指定载入和导出数据时对 NULL 字符串和空值的处理方式
SEND_NODE_NUMBER 指定 dmfldr 在数据载入时发送节点的个数,整数类型
TASK_THREAD_NUMBER 指定 dmfldr 在数据载入时处理用户数据的线程数目
BLDR_NUM 水平分区表装载时,指定服务器 BLDR 的最大个数
BDTA_SIZE BDTA(Batch DaTA)的大小
PARALLEL dmfldr 向服务器导入数据时,是否开启并行模式
3dmfldr 实战
3.1 dmfldr 控制文件
对于上述控制文件语法,需要说明的是: dmfldr 在处理数据文件中换行符时 windows 默认为 0x0D0A(\\r\\n),非
windows 默认为 0x0A(\\n),用户应该根据现有的数据文件中的换行符做相应的
调整。对应选项为<row_term_option>,若指定的值为十六进制的字
符串值需要指明[X]选项,值不再需要以 0x 开头。若没有指明[X]选项,
则值为指定的字符串;
关于列分隔符,用户应当指定 FIELDS 或者 coldef_option 中的至少一种。若 两者均存在,则以 coldef_option 中的设置为准,若分隔符指明[X]选项,则
表明此分隔符为十六进制格式的字符串;
关于 file_option,用来指定单个文件;
关于 directory_option,用来指定整个文件夹。指定此选项后,dmfldr 会自
动扫描指定文件夹下的所有文件,这些文件数据将被导入到服务器;
关于 LIST 选项,INFILE 使用 LIST 选项时,表明实际的数据文件路径存储在
INFILE 指定的文件中,该文件可以存储多个实际的数据文件路径,使用逗号或者
换行分割; 关于 APPEND|REPLACE|INSERT 选项,当 dmfldr 处于数据装载模式时,
INSERT 表示插入方式,向空表插入新记录(如果不是空表则会报错无效的装载模
式);APPEND 表示追加方式,为缺省方式,在表中追加新记录;REPLACE 表示
替代方式,先清空表再插入新记录. 当 dmfldr 处于导出数据模式时,dmfldr 会检查导出数据文件是否存在,若不
存在则直接创建新文件;若存在,当设置为 APPEND 时,以追加的方式写入数据;
设置为 REPLACE 时,先删除文件再重新创建新文件;设置为其他值时则报错。
选项默认值为 APPEND;
关于 OPTIONS 选项,该选项支持命令行参数中除 userid,control,help 以
外的所有参数的指定,每个参数值对使用空格或者换行分割。对于 option 中出
现的参数,在 dmfldr 的指定执行参数中也出现的,dmfldr 会选择 option 中
对应参数的值执行;
关于 col_def,FILLER 表示跳过处理数据文件中指定列的值;
关于 property_option 选项
position(p1:p2):从数据文件中每行数据的第 p1 个字节到第 p2 个字节
为该列值,包含边界 p1,p2; position(p1):从数据文件中每行数据的第 p1 个字节开始,到下一个列分
隔符之间的数据为该列值,包含边界 p1; position 选项对大字段数据无效,若对大字段类型指定此选项会报错;
NULL:指定的值为 NULL,忽略数据文件中的值;
property_option 参数仅对导入有效;
关于 term_option 选项,该选项用来指定数据文件中指定列的结束标志。列的
结束标志可以是 WHITESPACE(空格)或者用户自定义的字符串或十六进制串。
指定了 term_option 后,该列不需要用 FIELDS 分隔;
关于 enclosed_option 选项,此参数指定封闭符,为可选参数,默认不存在封
闭符。若在 into_table_clause 和 coldef_option 中均设置了封闭符,则
以 coldef_option 中的设置为准,若封闭符前指定[X]选项,则表明此封闭符
为十六进制格式的字符串; 分隔符或封闭符字符串的长度均不能超过 255 个字节;
关于 constant_option 选项,指定 constant 关键字后,数据文件中不需要为
该列准备数据,如果指定了,该列数据将作为下一字段数据装载而导致数据混乱。
constant 选项对大字段类型无效;
关于 fun_option 选项,目前只支持 trim()和 replace(colname, srcStr,
destStr)函数。trim()函数用于去除列数据的前后空格;replace()函数用于
将 colname 列名指定的列数据中的 srcStr 替换为 destStr,其中 srcStr 和
destStr 参数可使用 chr(int)函数将数字转换成字符串,要求 chr()的参数和
返回值均不超过 4 个字节;
关于 ep_option 选项,用于指定数据将要发送的目的站点,仅适用于 MPP 环境
例:一个 dmfldr 控制文件的例子
OPTIONS
(
SKIP = 0
ROWS = 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 ‘|’
(
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 DATE FORMAT ‘yyyy-mm-dd’
)
3.2 指定数据文件
数据文件中的列分隔符和行分隔符由用户指定,并在控制文件中设置为与数据文件中的一致。
3.2.1 在控制文件中指定数据文件
- 建表 TEST
DROP TABLE TEST;
CREATE TABLE TEST(C1 INT,C2 INT,C3 DATE); - 编辑数据文件 test.txt,存放路径为/opt/data/test.txt,文件内容如下
1 1|2015-11-06
2 2|2015-11-05
3 3|2015-11_04 - 编辑控制文件 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’
) - 使用 dmfldr 进行数据载入
./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=’/opt/data/test.ctl’
3.2.2 使用 DATA 参数指定数据文件
如果控制文件中数据文件路径指定为‘’,在命令行通过 DATA
参数指定数据文件路径,DATA 所指定的文件路径会替换‘’。
LOAD DATA
INFILE *
INTO TABLE test
FIELDS ‘|’
(
C1 TERMINATED BY ’ ',
C2,
C3 DATE FORMAT ‘yyyy-mm-dd’
)
./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=’/opt/data/test.ctl’ data=’/opt/data/test.txt’
3.3 数据转换与错误数据文件
dmfldr 支持所有 DM 数据库支持的列定义类型,包括字符串、数值、时间日期、时间
日期间隔、大字段类型等。
若数据文件的编码方式与 DM 数据库服务器的编码方式不一样,dmfldr 还需要进行字
符编码的转换。dmfldr 支持 UTF8、GBK 和 GB18030 编码之间的相互转换。
3.5 大字段数据处理
dmfldr 支持对 DM 数据库的大字段类型数据的载入和导出,DM 数据库支持的大字段
数据类型有 TEXT、LONGVARCHAR、IMAGE、LONGVARBINARY、BLOB 以及 CLOB。
3.5.1 大字段数据的导出
当 dmfldr 工作在导出模式即 MODE 为 OUT 时,dmfldr 生成大字段对应的数据文件
名由 LOB_FILE_NAME 指定,若未指定默认为 dmfldr.lob,文件存放于
LOB_DIRECTORY 指定的目录,如果未指定 LOB_DIRECTORY 则存放于指定的导出数据文
件同一目录。
- 建表 TEST
DROP TABLE TEST;
CREATE TABLE TEST(C1 INT,C2 BLOB,C3 CLOB); - 插入数据
INSERT INTO TEST VALUES(1,0XAB121032DE,‘abcdefg’);
INSERT INTO TEST VALUES(2,0XAB121032DE,‘abcdefg’);
COMMIT; - 编辑控制文件 test.ctl,存放路径为/opt/data/test.ctl,内容如下:
LOAD DATA
INFILE ‘/opt/data/test.txt’
INTO TABLE test
FIELDS ‘|’
(
C1,
C2,
C3
) - 使用 dmfldr 进行导出数据
./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=’/opt/data/test.ctl’
LOB_DIRECTORY=’/opt/data/’ mode=‘out’
在这个例子中,指定了 LOB_DIRECTORY,而没有指定 LOB_FILE_NAME,导出的大
字段数据文件将存放在 LOB_DIRECTORY 指定的/opt/data 目录,文件名为
dmfldr.lob。
3.5.2 DIRECT 为 TRUE 时大字段数据的载入
3.5.3 DIRECT 为 FALSE 时大字段数据的载入
当 MODE 为 IN 且 DIRECT 为 FALSE 时,数据文件中大字段列数据即字段内容。
BLOB_TYPE 参数指定 BLOB 列内容为十六进制或者字符串:
BLOB_TYPE 为 HEX_CHAR 时,数据文件中 BLOB 列当作为十六进制内容;
BLOB_TYPE 为 HEX 时,数据文件中 BLOB 列为字符串形式内容,导入后会转换
为十六进制。
BLOB_TYPE 参数只对 DIRECT 为 FALSE 时有效,默认为 HEX_CHAR。
3.6 日志文件及日志信息
./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=’/opt/data/test.ctl’
log=’/opt/data/test.log’
3.7 自增列装载
自增列是比较特殊的列,为了保证数据库中自增列列值的正确性,用户在进行数据载入
时需要特别注意。
当 DIRECT 参数为 FALSE 时,dmfldr 将把从数据文件中读取的自增列值作为目标值
插入数据库表中,用户应当保证每一行的自增列的值符合自增列的规则,否则将造成数据混
乱。
当 DIRECT 参数为 TRUE 时,dmfldr 提供了 SET_IDENTITY 参数(默认为 FALSE)
对数据载入时自增列的处理进行设置:
如果指定 SET_IDENTITY 选项值为 TRUE,则 dmfldr 将把从数据文件中读取的
自增列值作为目标值插入数据库表中,用户应当保证每一行的自增列的值符合自增
列的规则,否则将造成数据混乱;
如果 SET_IDENTITY 选项值设置为 FALSE,则 dmfldr 将忽略数据文件中对应
自增列的值,服务器将根据自增列定义和表中已有数据自动生成自增列的值插入每
一行的对应列。
- 建表 TEST,并插入两行数据
DROP TABLE TEST;
CREATE TABLE TEST(C1 INT IDENTITY(1,1),C2 VARCHAR);
INSERT INTO TEST(C2) VALUES(‘AAA’);
INSERT INTO TEST(C2) VALUES(‘BBB’);
COMMIT;
此时表 TEST 中的数据为:
行号 C1 C2
1 1 AAA
2 2 BBB
2) 编辑数据文件 test.txt,存放路径为/opt/data/test.txt,文件内容如下
2|aaa
3|bbb
4|ccc
- 编辑控制文件 test.ctl,存放路径为/opt/data/test.ctl,内容如下:
LOAD DATA
INFILE ‘/opt/data/test.txt’
INTO TABLE test
FIELDS ‘|’
(
C1,
C2
) - 使用 dmfldr 进行数据载入
./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=’/opt/data/test.ctl’ direct=true set_identity=false - 查看表 TEST 的数据
LINEID C1 C2
1 1 AAA
2 2 BBB
3 3 aaa
4 4 bbb
5 5 ccc
在这个例子中,表 TEST 中已有两行数据,由于 SET_IDENTITY 置为 FALSE,因此
在数据载入时 dmfldr 根据 C1 列的定义和表中已有数据,为 C1 列重新插入合适的值。
我们再看看如果将 SET_IDENTITY 置为 TRUE 结果会怎样。
./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=’/opt/data/test.ctl’
direct=true set_identity=true
SELECT * FROM TEST;
行号 C1 C2
1 1 AAA
2 2 BBB
3 2 aaa
4 3 bbb
5 4 ccc
3.8 数据排序
SORTED 参数用来设置数据是否已经按照聚集索引排序,默认为 FALSE。
如果设置为 TRUE,则用户必须保证数据已按照聚集索引排序完成,并且如果表中存在
数据,需要插入的数据索引值要比表中数据的索引值大,服务器在做插入操作时顺序进行插
入。若数据并未按照索引排序,则 dmfldr 会报错,装载失败。
如果设置为 FALSE,则服务器对于每条记录进行定位插入。
- 建表 TEST
DROP TABLE TEST;
CREATE TABLE TEST(C1 INT CLUSTER PRIMARY KEY,C2 VARCHAR); - 编辑数据文件 test.txt,存放路径为/opt/data/test.txt,文件内容如下
2|aaa
3|bbb
4|ccc
5|ddd
1|zzz - 编辑控制文件 test.ctl,存放路径为/opt/data/test.ctl,内容如下:
LOAD DATA
INFILE ‘/opt/data/test.txt’
INTO TABLE test
FIELDS ‘|’
(
C1,
C2
) - 使用 dmfldr 进行数据载入
./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=’/opt/data/test.ctl’
sorted=true
由于本例中数据文件中的数据并没有按照 C1 列排序,dmfldr 将会报错。
不能使用 NOSORT 选项,数据非有序
3.9 空值处理
dmfldr 通过设置 NULL_MODE 参数来处理空值。
3.10 类类型装载
dmfldr 支持对 CLASS 类型数据的装载。CLASS 类型装载和 LOB 类型一样,载入时
需要指定 LOB_DIRECTORY,另外需要指定 ENABLE_CLASS_TYPE 为 TRUE;导出时,默
认导出目录和数据文件所在目录一致,导出类类型形成的大字段文件默认为 dmfldr.lob,
导出目录和大字段文件可通过 LOB_DIRECTORY 和 LOB_FILE_NAME 参数设置。
3.11 条件过滤
通过在控制文件中指定 WHEN <field_conditions>子句,可以在装载过程中对数
据进行过滤,符合 field_conditions 条件的数据才会被装载。
对于条件过滤的使用需注意以下几点:
判断条件中的操作符仅支持比较相等和不相等,即=、!=和<>这三个比较操作符;
目前仅支持使用 AND 连接多个过滤条件; BLANKS 和 WHITESPACE 表示若干个空格;
- 建表 TEST
DROP TABLE TEST;
CREATE TABLE TEST(C1 INT,C2 INT); - 编辑数据文件 test.txt,存放路径为/opt/data/test.txt,文件内容如下
12
23
32
48
91 - 编辑控制文件 test.ctl,存放路径为/opt/data/test.ctl,内容如下:
LOAD DATA
INFILE ‘/opt/data/test.txt’
INTO TABLE test
WHEN C1 != ‘2’ (C1 position (1:1),
C2 position (2:2) ) - 使用 dmfldr 进行数据载入
./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=’/opt/data/test.ctl’ - 查看表 TEST 的数据,可以看到数据文件中的行 2,3 被过滤掉了。
SELECT * FROM TEST;
行号 C1 C2
1 1 2
2 3 2
3 4 8
4 9 1
3.12 多表装载
通过在控制文件中指定多个 INTO TABLE 子句,可以将一批数据同时向多个表进行装
载。每个 INTO TABLE 子句中都可以指定 WHEN 过滤条件、FIELDS 子句和列定义子句。
- 建表 TEST1、TEST2
DROP TABLE TEST1;
DROP TABLE TEST2;
CREATE TABLE TEST1(C1 INT,C2 INT);
CREATE TABLE TEST2(C1 INT,C2 INT); - 编辑数据文件 test.txt,存放路径为/opt/data/test.txt,文件内容如下
1,2
2,3
3,2
4,8
9,1 - 编辑控制文件 test.ctl,存放路径为/opt/data/test.ctl,内容如下:
LOAD DATA
INFILE ‘/opt/data/test.txt’
INTO TABLE test1
WHEN C1 != ‘1’
FIELDS ‘,’
(c1 position (1:1),
c2)
INTO TABLE test2
WHEN (3:3) = ‘2’ AND c1 != ‘3’
FIELDS ‘,’
(
c1 position (1:1),
c2
) - 使用 dmfldr 进行数据载入
./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=’/opt/data/test.ctl’ - 查看表 TEST1 和 TEST2 的数据如下
SELECT * FROM TEST1;
行号 C1 C2
1 2 3
2 3 2
3 4 8
4 9 1
SELECT * FROM TEST2;
3.13 个性化设置
用户通过设置 dmfldr 的 SKIP、LOAD、ROWS 参数,可以根据自己的需求调整装载的
起始行、装载最大行数以及每次提交的行数。
./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=’/opt/data/test.ctl’
skip=3 load=5
3.14 主备切换时的数据继续载入
在 DM 数据守护主备环境下,如果 dmfldr 数据载入中发生主备切换,dmfldr 支持主
备切换完成后自动继续装载数据,并且能保持数据正确
3.15MPP 本地分发
3.16 提升 dmfldr 性能
用户在使用 dmfldr 时根据系统和数据的具体情况对一些参数进行调整,可以获得更
好的性能,这些参数包括:
BUFFER_NODE_SIZE
BUFFER_NODE_SIZE 设置读取文件缓冲区页大小,值越大,缓冲区的页越大,每次读
取的数据就越多,每次发送到服务器的数据也就越多,效率越高。但其大小受 dmfldr 客
户端内存大小限制。 READ_ROWS
在某些情况下,BUFFER_NODE_SIZE 读入的数据行数很大,而后续操作处理不了这么
大的行数,此时可以用 READ_ROWS 来限制处理的行数。dmfldr 取 READ_ROWS 和
BUFFER_NODE_SIZE 中较小的值作为一次处理的行数。
SEND_NODE_NUMBER
指定 dmfldr 在数据载入时发送节点的个数,默认由系统计算一个初始值。若在数据
载入时发现发送节点不够用,系统会动态增加分配。在系统内存足够的情况下,可以适当设
大 SEND_NODE_NUMBER 值,提升 dmfldr 载入性能。
TASK_THREAD_NUMBER
指定 dmfldr 在数据载入时处理用户数据的线程数目。默认情况下,dmfldr 将该参
数值设为系统 CPU 的个数,但当 CPU 个数大于 8 时,默认值都被置为 8。在 dmfldr 客户
端所在机器 CPU 大于 8 环境中,提高 TASK_THREAD_NUMBER 值可以提升 dmfldr 装载
性能。
BLDR_NUM水平分区表装载时,指定服务器 BLDR 的最大个数,默认为 64。
服务器的 BLDR 保存水平分区子表相关信息,BLDR_NUM 的设置也就指定了服务器能
同时载入的水平分区子表的个数。若 BLDR_NUM 设置太大,当水平分区子表数过多时,可
能会导致服务器内存不足。当载入时实际需要的 BLDR 个数超出 BLDR_NUM 设置时,会淘
汰指定子表的 BLDR,并替换为新的子表 BLDR。 BDTA_SIZE
BDTA(Batch Data)的大小,默认为 5000。
BDTA 代表 DM 数据库批量数据处理机制中一个批量,在内存、CPU 允许的条件下,增
大 BDTA_SIZE 能加快装载速度;在网络是装载性能瓶颈时,增大 BDTA_SIZE 影响不大。
INDEX_OPTION
索引的设置选项,默认为 1。INDEX_OPTION 的可选项有 1、2 和 3。 1 代表服务器装载数据时先不刷新二级索引,而是将新数据按照索引预先排序,在装载
完成后,再将排好序的数据插入索引。如果在数据载入前,目标表中已有较多数据,建议
INDEX_OPTION 置为 1。 2 代表服务器在快速装载过程中不刷新二级索引数据,只在装载完成时重建所有二级索
引。如果在数据载入前,目标表中没有数据或数据量较小,建议 INDEX_OPTION 置为 2。 3 代表服务器使用追加模式来进行二级索引的插入, 在数据装载的过程中, 同时进行
二级索引的插入, 当原有数据量远大于插入数据量时, 建议 INDEX_OPTION 置为 3。
3.17dmfldr 使用限制
dmfldr 的使用存在以下一些限制:
不支持向临时表、外部表装载数据
不支持向系统表装载数据
不支持向带有位图索引的表装载数据
不支持向带有函数索引的表装载数据
不支持向带有全文索引的表装载数据
不支持向带有全局索引的表装载数据
不支持向 DCP 代理装载数据
dmfldr 装载时,对约束进行检查,对各种约束的处理机制如下表所示
以上是关于dmfldr 使用手册的主要内容,如果未能解决你的问题,请参考以下文章