注册
快速装载工具总结及测试
技术分享/ 文章详情 /

快速装载工具总结及测试

奥特曼打小怪兽 2024/08/02 630 0 0

快速装载工具总结及测试

DM 提供了两种形式的快速装载工具:一是 dmfldr;二是 dmldrc 和 dmldrp
dmfldr(DM Fast Loader)包含 dmfldr 客户端和 dmfldr 模块两部分。dmfldr 客户端实现初始化快速装载环境、读取数据、打包数据和发送数据功能。dmfldr 功能模块嵌入在数据库服务器中,实现装载功能。两者相互协作,共同完成 dmfldr 的各项功能。
Dmldrp 轻量级快速装载工具服务器
dmldrc 轻量级快速装载工具客户端

1注意:

1.1报错注意点:

1.由于目的表上可能存在约束等原因,导致某些数据无法插入成功,此时服务器端会将这一批数据全部回滚,并将这批数据全部记为错误数据,但服务器端插入时的错误数据并不会记录到 BADFILE 中。
2.ERRORS=服务器端插入数据记录的错误数据数+客户端数据转换时的错误数据数
3.另外需要注意的是,DMDPC 环境下暂不支持自增列装载。

1.2使用限制

dmfldr 的使用存在以下一些限制:
不支持向临时表、外部表装载数据
不支持向系统表装载数据
不支持向带有位图索引的表装载数据
不支持向带有函数索引的表装载数据
不支持向带有全文索引的表装载数据
不支持向 DCP 代理装载数据
不支持在 DPC 环境下,向带有全局索引的表装载数据
dmfldr 装载时会对约束进行检查,对各种约束的处理机制如下表所示;由于 dmfldr 不处理约束的有效性,都视为有效,故需要用户自行处理约束有效性等相关内容
表3.1 dmfldr的约束检查机制
约束 数据不满足时 数据插入与否 约束是否有效
非空约束(NOT NULL) 报错 不插入 有效
聚集索引(CLUSTER PRIMARY KEY) 报错 不插入 有效
唯一约束(UNIQUE, PRIMARY KEY) 报错 插入 有效
引用约束(FOREIGN KEY) 不报错 插入 有效
CHECK 约束(CHECK) 不报错 插入 有效
注意
当数据不满足唯一约束时,唯一约束仍有效,但相关联的唯一索引将会失效。

2dmfldr

2.1dmfldr 参数

PS D:\dmdbms\bin> .\dmfldr.exe help
version: 03134284132-20231226-213242-20081
格式: dmfldr.exe   KEYWORD=value

例程: dmfldr.exe   SYSDBA/SYSDBA CONTROL='c:\fldr.ctl'

USERID 必须是命令行中的第一个参数
字符串类型参数必须以引号封闭

关键字              说明(默认值)
--------------------------------------------------------------------------------
USERID              用户名/口令, 格式:{<username>[/<password>] | /}[@<connect_identifier>][<option>] [<os_auth>]
                    <connect_identifier> : [<svc_name> | host[:port] | <unixsocket_file>]
                    <option> : #{<exetend_option>=<value>[,<extend_option>=<value>]...}
                               --此行外层{}是为了封装参数之用,书写时需要保留
                    <os_auth> : 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                 使用自定义查询语句,仅导出模式有效
SQLFILE             自定义查询语句所在文件,仅导出模式有效
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文件 4: 错误仅输出到屏幕
FLDR_INI            配置文件路径,字符串类型
RECONN              自动重连次数(0)
RECONN_TIME         自动重连等待时间(5), 单位(s), 有效值范围(1~10000)
WIDTH               设置列数据宽度
SEDF                被替换的字符列表
SEDT                用于替换的字符列表
ESCAPE              转义符
DB2_MODE            兼容DB2模式
PRIORITY_ENCLOSE    DB2模式下, enclose优先级最高
HELP                打印帮助信息

2.2dmdldr控制文件

[OPTIONS(
<id>=<value>
……
        )]
LOAD [DATA]
INFILE < <file_option>|<directory_option> >
[BADFILE <path_name>] (错误数据文件路径最终值的优先选择顺序为命令行中指定的参数值,控制文件的 LOAD 节点选项,控制文件的 OPTIONS 选项,dmfldr.ini 配置文件中指定的参数值 BADFILE 仅作用于 dmfldr 的工作 MODE 为 IN 的情况下,MODE 为 OUT 时无效。)
[APPEND|REPLACE|INSERT]
<into_table_clause>
<id> ::=参数
<value> ::=值
<file_option> ::= [LIST] <path_name> [<row_term_option>] [,<path_name>
[<row_term_option>]]
<directory_option> ::= DIRECTORY <path_name> [<row_term_option>]
<path_name> ::=文件地址
<row_term_option> ::=STR [X] <delimiter>
<into_table_clause> ::= <into_table_single>{<into_table_single>}
<into_table_single> ::=INTO TABLE [<schema>.]<tablename>
                        [EP <ep_option>]
                        [WHEN <field_conditions>]
                        [FIELDS [TERMINATED BY] [X] <delimiter>]
                        [<enclosed_option>]
                        [TRAILING NULLCOLS]
                        [<coldef_option>]
<schema> ::=模式名
<tablename> ::=表名
<ep_option> ::=(<ep_list>)
<ep_list> ::=整型数字列表,以逗号分隔
<field_conditions> ::= <field_condition>{ AND <field_condition>}
<field_condition> ::= [(] <cmp_exp><cmp_ops><cmp_data>[)]
<cmp_exp> ::= <colid> | (p1:p2)
<cmp_ops> ::= = | <> | !=
<cmp_data> ::= [X] '<字符串常量>' | BLANKS | WHITESPACE
<delimiter> ::= '<字符串常量>'
<coldef_option> ::= (<col_def>{ ,<col_def>})
<col_def> ::= <col_id> [FILLER][<property_option>][<dtype_option>][<fmt_option>][<term_option>][<enclosed_option>][<constant_option>][<fun_option>]
<col_id> ::= 列名
<property_option> ::= <position_option> | NULL
<position_option> ::= position(p1:p2) | position(p1) | position(*)
<dtype_option> ::= DATE | CHAR
<fmt_option> ::= FORMAT '<日期格式>'
<term_option> ::= TERMINATED [BY] <wx_option>
<wx_option> ::= WHITESPACE|[X] <delimiter>
<enclosed_option> ::= [OPTIONALLY] ENCLOSE [BY] [X] <delimiter>
<constant_option> ::= CONSTANT "<常量>"
<fun_option> ::= "<函数>"

3dmfldr测试:

3.1导出

3.1.1Dept

OPTIONS
(
	SKIP = 0
	ROWS = 50000
	DIRECT = TRUE
	INDEX_OPTION = 2
)
LOAD DATA
INFILE 'D:\linshi\BONUS.TXT'
INTO TABLE scott.DEPT
FIELDS '|'
(
DEPTNO,
DNAME,
LOC
)

PS D:\dmdbms\bin> .\dmfldr.exe userid=SYSDBA/shuangshuang@dameng CONTROL='''D:/linshi/control_file.txt''' mode='''out'''
dmfldr V8
4 rows is load out
export success.
4 行数据已导出
用时:6.995(ms)

10|ACCOUNTING|NEW YORK
20|RESEARCH|DALLAS
30|SALES|CHICAGO
40|OPERATIONS|BOSTON

3.1.2Emp

OPTIONS
(
	SKIP = 0
	ROWS = 50000
	DIRECT = TRUE
	INDEX_OPTION = 2
)
LOAD DATA
INFILE 'D:\linshi\EMP.TXT'
INTO TABLE scott.EMP
FIELDS '|'
(
EMPNO,
ENAME,
JOB,
MGR,
HIREDATE,
SAL,
COMM,
DEPTNO
)


PS D:\dmdbms\bin> .\dmfldr.exe userid=SYSDBA/shuangshuang@dameng CONTROL='''D:/linshi/control_file.txt''' mode='''out'''
dmfldr V8
14 rows is load out
export success.
14 行数据已导出
用时:12.178(ms)


7369|SMITH|CLERK|7902|1980-12-17 00:00:00|800||20
7499|ALLEN|SALESMAN|7698|1981-02-20 00:00:00|1600|300|30
7521|WARD|SALESMAN|7698|1981-02-22 00:00:00|1250|500|30
7566|JONES|MANAGER|7839|1981-04-02 00:00:00|2975||20
7654|MARTIN|SALESMAN|7698|1981-09-28 00:00:00|1250|1400|30
7698|BLAKE|MANAGER|7839|1981-05-01 00:00:00|2850||30
7782|CLARK|MANAGER|7839|1981-06-09 00:00:00|2450||10
7788|SCOTT|ANALYST|7566|1987-04-19 00:00:00|3000||20
7839|KING|PRESIDENT||1981-11-17 00:00:00|5000||10
7844|TURNER|SALESMAN|7698|1981-09-08 00:00:00|1500|0|30
7876|ADAMS|CLERK|7788|1987-05-23 00:00:00|1100||20
7900|JAMES|CLERK|7698|1981-12-03 00:00:00|950||30
7902|FORD|ANALYST|7566|1981-12-03 00:00:00|3000||20
7934|MILLER|CLERK|7782|1982-01-23 00:00:00|1300||10

3.1.3SALGRADE

OPTIONS
(
	SKIP = 0
	ROWS = 50000
	DIRECT = TRUE
	INDEX_OPTION = 2
)
LOAD DATA
INFILE 'D:\linshi\SALGRADE.TXT'
INTO TABLE scott.SALGRADE
FIELDS '|'
(
GRADE,
LOSAL,
HISAL
)

PS D:\dmdbms\bin> .\dmfldr.exe userid=SYSDBA/shuangshuang@dameng CONTROL='''D:/linshi/control_file.txt''' mode='''out'''
dmfldr V8
5 rows is load out
export success.
5 行数据已导出
用时:11.465(ms)

1|700|1200
2|1201|1400
3|1401|2000
4|2001|3000
5|3001|9999

3.2导入

3.2.1Dept

OPTIONS
(
	SKIP = 0
	ROWS = 50000
	DIRECT = TRUE
	INDEX_OPTION = 2
)
LOAD DATA
INFILE  'D:\linshi\dept.TXT'
BADFILE 'D:\linshi\dept.bad'
INTO TABLE scott.dept
FIELDS '|'
(
DEPTNO,
DNAME,
LOC
)

PS D:\dmdbms\bin> .\dmfldr.exe userid=SYSDBA/shuangshuang@test CONTROL='''D:/linshi/control_file.txt'''
dmfldr V8
控制文件:

加载行数:全部

每次提交服务器行数:50000

跳过行数:0

允许错误数:100

是否直接加载:Yes

是否插入自增列:No

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

字符集:GBK



数据文件共1个:
D:\linshi\dept.TXT

错误文件:D:\linshi\dept.bad

目标表:SCOTT.DEPT

列名                                                                                                                             包装数据类型
终止
DEPTNO                                                                                                                           CHARACTER            |
DNAME                                                                                                                            CHARACTER            |
LOC                                                                                                                              CHARACTER            |

行缓冲区数量: 12
任务线程数量: 12

4行记录已提交

目标表:SCOTT.DEPT
load success.
4 行加载成功。
0 行由于数据错误没有加载。
0 行由于数据格式错误被丢弃。

跳过的逻辑记录总数:0
读取的逻辑记录总数:4
拒绝的逻辑记录总数:0

5.788(ms)已使用

3.2.2Emp

OPTIONS
(
	SKIP = 0
	ROWS = 50000
	DIRECT = TRUE
	INDEX_OPTION = 2
)
LOAD DATA
INFILE  'D:\linshi\EMP.TXT'
BADFILE 'D:\linshi\emp.bad'
INTO TABLE scott.emp
FIELDS '|'
(
EMPNO,
ENAME,
JOB,
MGR,
HIREDATE DATE FORMAT 'YYYY-MM-DD hh24:mi:ss',
SAL,
COMM,
DEPTNO
)

PS D:\dmdbms\bin> .\dmfldr.exe userid=SYSDBA/shuangshuang@test CONTROL='''D:/linshi/control_file.txt'''
dmfldr V8
控制文件:

加载行数:全部

每次提交服务器行数:50000

跳过行数:0

允许错误数:100

是否直接加载:Yes

是否插入自增列:No

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

字符集:GBK



数据文件共1个:
D:\linshi\EMP.TXT

错误文件:D:\linshi\emp.bad

目标表:SCOTT.EMP

列名                                                                                                                             包装数据类型
终止
EMPNO                                                                                                                            CHARACTER            |
ENAME                                                                                                                            CHARACTER            |
JOB                                                                                                                              CHARACTER            |
MGR                                                                                                                              CHARACTER            |
HIREDATE                                                                                                                         YYYY-MM-DD hh24:mi:ss |
SAL                                                                                                                              CHARACTER            |
COMM                                                                                                                             CHARACTER            |
DEPTNO                                                                                                                           CHARACTER            |

行缓冲区数量: 12
任务线程数量: 12

14行记录已提交

目标表:SCOTT.EMP
load success.
14 行加载成功。
0 行由于数据错误没有加载。
0 行由于数据格式错误被丢弃。

跳过的逻辑记录总数:0
读取的逻辑记录总数:14
拒绝的逻辑记录总数:0

5.259(ms)已使用

3.2.3SALGRADE

OPTIONS
(
	SKIP = 0
	ROWS = 50000
	DIRECT = TRUE
	INDEX_OPTION = 2
)
LOAD DATA
INFILE  'D:\linshi\SALGRADE.TXT'
BADFILE 'D:\linshi\SALGRADE.bad'
INTO TABLE scott.SALGRADE
FIELDS '|'
(
GRADE,
LOSAL,
HISAL
)


PS D:\dmdbms\bin> .\dmfldr.exe userid=SYSDBA/shuangshuang@test CONTROL='''D:/linshi/control_file.txt'''
dmfldr V8
控制文件:

加载行数:全部

每次提交服务器行数:50000

跳过行数:0

允许错误数:100

是否直接加载:Yes

是否插入自增列:No

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

字符集:GBK



数据文件共1个:
D:\linshi\SALGRADE.TXT

错误文件:D:\linshi\SALGRADE.bad

目标表:SCOTT.SALGRADE

列名                                                                                                                             包装数据类型
终止
GRADE                                                                                                                            CHARACTER            |
LOSAL                                                                                                                            CHARACTER            |
HISAL                                                                                                                            CHARACTER            |

行缓冲区数量: 12
任务线程数量: 12

5行记录已提交

目标表:SCOTT.SALGRADE
load success.
5 行加载成功。
0 行由于数据错误没有加载。
0 行由于数据格式错误被丢弃。

跳过的逻辑记录总数:0
读取的逻辑记录总数:5
拒绝的逻辑记录总数:0

3.114(ms)已使用

4dmldrp装载工具服务器

4.1参数

PS D:\dmdbms\bin> .\dmldrp.exe help
dmldrp V8
格式: dmldrp.exe  KEYWORD=value
例程: dmldrp.exe

关键字              说明
---------------------------------------------------------------------
PORT               端口号(可选项, 默认为8336)
HELP               打印帮助信息

4.2启动

PS D:\dmdbms\bin> .\dmldrp.exe port=6666
dmldrp V8
dmldrp is ready!

5Dmldrc 装载工具客户端

5.1参数

PS D:\dmdbms\bin> .\dmldrc.exe help
version: 03134284132-20231226-213242-20081
格式: dmldrc.exe   KEYWORD=value

例程: dmldrc.exe   SYSDBA/SYSDBA 192.168.0.1:8336

USERID 必须是命令行中的第一个参数
SERVER 必须是命令行中的第二个参数
字符串类型参数必须以引号封闭

关键字              说明(默认值)
--------------------------------------------------------------------------------
USERID              用户名/口令, 格式:{<username>[/<password>] | /}[@<connect_identifier>][<option>] [<os_auth>]
                    <connect_identifier> : [<svc_name> | host[:port] | <unixsocket_file>]
                    <option> : #{<exetend_option>=<value>[,<extend_option>=<value>]...}
                               --此行外层{}是为了封装参数之用,书写时需要保留
                    <os_auth> : AS {SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO}
SERVER              dmldrp的IP地址和端口号。不需要指定参数名,直接指定host[:port]
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文件
FLDR_INI            配置文件路径,字符串类型
RECONN              自动重连次数(0)
RECONN_TIME         自动重连等待时间(5), 单位(s), 有效值范围(1~10000)
HELP                打印帮助信息

5.2Dmldrc导入

5.2.1SALGRADE

OPTIONS
(
	SKIP = 0
	ROWS = 50000
	DIRECT = TRUE
	INDEX_OPTION = 2
)
LOAD DATA
INFILE  'D:\linshi\SALGRADE.TXT'
BADFILE 'D:\linshi\SALGRADE.bad'
INTO TABLE scott.SALGRADE
FIELDS '|'
(
GRADE,
LOSAL,
HISAL
)

PS D:\dmdbms\bin> .\dmldrc.exe userid=SYSDBA/shuangshuang@test 127.0.0.1:6666 CONTROL='''D:/linshi/control_file.txt'''
dmldrc V8
控制文件:

加载行数:全部

每次提交服务器行数:50000

跳过行数:0

允许错误数:100

是否直接加载:Yes

是否插入自增列:No

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

字符集:unknown



数据文件共1个:
D:\linshi\SALGRADE.TXT


send data length:64

目标表:SALGRADE
load success.
5 行加载成功。
0 行由于数据错误没有加载。
0 行由于数据格式错误被丢弃。

跳过的逻辑记录总数:0
读取的逻辑记录总数:5
拒绝的逻辑记录总数:0

4.003(ms)已使用

5.2.2Emp

OPTIONS
(
	SKIP = 0
	ROWS = 50000
	DIRECT = TRUE
	INDEX_OPTION = 2
)
LOAD DATA
INFILE  'D:\linshi\EMP.TXT'
BADFILE 'D:\linshi\EMP.bad'
INTO TABLE scott.EMP
FIELDS '|'
(
EMPNO,
ENAME,
JOB,
MGR,
HIREDATE DATE FORMAT 'YYYY-MM-DD hh24:mi:ss',
SAL,
COMM,
DEPTNO
)

PS D:\dmdbms\bin> .\dmldrc.exe userid=SYSDBA/shuangshuang@test 127.0.0.1:6666 CONTROL='''D:/linshi/control_file.txt'''
dmldrc V8
控制文件:

加载行数:全部

每次提交服务器行数:50000

跳过行数:0

允许错误数:100

是否直接加载:Yes

是否插入自增列:No

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

字符集:unknown



数据文件共1个:
D:\linshi\EMP.TXT


send data length:759

目标表:EMP
load success.
14 行加载成功。
0 行由于数据错误没有加载。
0 行由于数据格式错误被丢弃。

跳过的逻辑记录总数:0
读取的逻辑记录总数:14
拒绝的逻辑记录总数:0

4.671(ms)已使用

5.2.3Dept

OPTIONS
(
	SKIP = 0
	ROWS = 50000
	DIRECT = TRUE
	INDEX_OPTION = 2
)
LOAD DATA
INFILE  'D:\linshi\dept.TXT'
BADFILE 'D:\linshi\dept.bad'
INTO TABLE scott.dept
FIELDS '|'
(
DEPTNO,
DNAME,
LOC
)


PS D:\dmdbms\bin> .\dmldrc.exe userid=SYSDBA/shuangshuang@test 127.0.0.1:6666 CONTROL='''D:/linshi/control_file.txt'''
dmldrc V8
控制文件:

加载行数:全部

每次提交服务器行数:50000

跳过行数:0

允许错误数:100

是否直接加载:Yes

是否插入自增列:No

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

字符集:unknown



数据文件共1个:
D:\linshi\dept.TXT


send data length:84

目标表:DEPT
load success.
4 行加载成功。
0 行由于数据错误没有加载。
0 行由于数据格式错误被丢弃。

跳过的逻辑记录总数:0
读取的逻辑记录总数:4
拒绝的逻辑记录总数:0

4.002(ms)已使用

6用到的语句或配置

6.1控制文件–导入

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 "sysdate",
C4 "substr(:C2,1,2)"
)

6.2输出表的列名称

DECLARE
    CURSOR V_USERS IS
        select T.COLUMN_NAME AS USERNAME from SYS.DBA_TAB_COLUMNS t where t.OWNER='SCOTT' AND T.TABLE_NAME='DEPT';
    
    V_RET V_USERS%ROWTYPE;
    V_RESULT VARCHAR2(30000);
BEGIN
   
    OPEN V_USERS;
    LOOP
     V_RESULT := '';
        FETCH V_USERS INTO V_RET;
        
        EXIT WHEN V_USERS%NOTFOUND;
        V_RESULT := V_RET.USERNAME||',' ;
        PRINT(V_RESULT);
    END LOOP;
    CLOSE V_USERS;
    
END;

https://eco.dameng.com/

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服