DMFLDR数据载入使用实践
1、DMFLDR概述
1.1DMFLDR功能介绍
dmfldr(DM Fast Loader)是 DM 提供的快速数据装载命令行工具。用户通过使用 dmfldr 工具能够把按照一定格式
排序的文本数据以简单、快速、高效的方式载入到 DM 数据库中,或把 DM 数据库中的数据按照一定格式写入文本文件。
DMFLDR体系结构
当进行数据载入时,dmfldr 客户端接收用户提交的命令与参数,分析控制文件与数据文件,将数据打包发送给服务器端的 dmfldr 模块,由服务器完成数据的真正装载工作。并分析服务器返回的消息,必要时根据用户参数指定生成日志文件与错误数据文件。
当进行数据导出时,dmfldr 客户端接收用户提交的命令与参数,分析控制文件,将用户要求转换成相应消息发送给服务器端的 dmfldr 模块。服务器解析并打包需要导出的数据,发送给 dmfldr 客户端,客户端将数据写入指定的数据文件,必要时根据用户参数指定生成日志文件。
1.2DMFLDR参数
[dmdba@lei2 ~]$ dmfldr help
version: 03134284194-20240703-234060-20108 Pack1
格式: ./dmfldr KEYWORD=value例程: ./dmfldr SYSDBA/SYSDBA CONTROL='/opt/data/fldr.ctl'USERID 必须是命令行中的第一个参数
字符串类型参数必须以引号封闭关键字 说明(默认值)
--------------------------------------------------------------------------------
USERID 用户名/口令, 格式:{<username>[/<password>] | /}[@<connect_identifier>][<option>] [<os_auth>]<connect_identifier> : [<svc_name> | host[:port] | <unixsocket_file>]<option> : #{<extend_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 读入文件缓冲区的大小 (10MB),有效值范围1~2048
LOG_SIZE 日志信息缓冲区的大小 (1MB),有效值范围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数据最大大小(10MB)
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 转义符
EXPORT_MODE MPP/DPC环境, 使用sql语句时的导出模式(0), 0: 普通模式 1: 快速模式, LOCAL方式连接
BAD_FILE_MODE 错误数据文件模式(0), 0: 普通模式 1: 纯数据模式
COMPATIBLE_MODE 兼容模式(0), 0: 不做兼容 1: 兼容DB2 2: 兼容MYSQL
PRIORITY_ENCLOSE DB2模式下, enclose优先级最高
HELP 打印帮助信息
2、DMFLDR使用测试
2.1使用 DATA参数指定数据文件
也可以使用 DATA 参数指定 dmfldr 的数据文件,数据文件路径的优先选择顺序为先控制文件,后参数选项。如果控制文件中数据文件路径指定为‘’,在命令行通过 DATA参数指定数据文件路径,DATA 所指定的文件路径会替换‘’。
2.1.1创建表
[dmdba@lei2 ~]$ disql lei/leileilei服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.368(ms)
disql V8SQL> CREATE TABLE fldr(C1 INT,C2 INT,C3 DATE);
操作已执行
已用时间: 7.889(毫秒). 执行号:1001.
2.1.2创建数据文件
创建数据文件/home/dmdba/fldr.txt。
[dmdba@lei2 ~]$ vi /home/dmdba/fldr.txt
添加:
1 1|2022-09-06
2 2|2023-09-06
3 3|2024-09-06
2.1.3创建控制文件
创建控制文件/home/dmdba/fldr.ctl
[dmdba@lei2 ~]$ vi /home/dmdba/fldr.ctl
添加:
LOAD DATA
INFILE *
INTO TABLE lei.fldr
FIELDS '|'
(
C1 TERMINATED BY ' ',
C2,
C3 DATE FORMAT 'yyyy-mm-dd'
)
2.1.4dmfldr导入数据
[dmdba@lei2 ~]$ dmfldr userid=SYSDBA/SYSDBA@192.168.0.2:5236 control=\'/home/dmdba/fldr.ctl\' data=\'/home/dmdba/fldr.txt\'
dmfldr V8
控制文件:加载行数:全部每次提交服务器行数:50000跳过行数:0允许错误数:100是否直接加载:Yes是否插入自增列:No数据是否已按照聚集索引排序:No字符集:UTF-8数据文件共1个:
/home/dmdba/fldr.txt错误文件:fldr.bad目标表:LEI.FLDR列名 包装数据类型 终止
C1 CHARACTER WHT
C2 CHARACTER |
C3 yyyy-mm-dd |行缓冲区数量: 2
任务线程数量: 13行记录已提交目标表:LEI.FLDR
load success.
3 行加载成功。
0 行由于数据错误没有加载。
0 行由于数据格式错误被丢弃。跳过的逻辑记录总数:0
读取的逻辑记录总数:3
拒绝的逻辑记录总数:02.059(ms)已使用SQL> select * from fldr;行号 C1 C2 C3
---------- ----------- ----------- ----------
1 1 1 2022-09-06
2 2 2 2023-09-06
3 3 3 2024-09-06已用时间: 1.026(毫秒). 执行号:1002.
2.2数据转换与错误数据文件
2.2.1创建表
[dmdba@lei2 ~]$ disql lei/leileilei服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.368(ms)
disql V8SQL> CREATE TABLE fldr2(C1 INT,C2 INT,C3 DATE);
操作已执行
已用时间: 7.889(毫秒). 执行号:1003.
2.2.2创建数据文件
创建数据文件/home/dmdba/fldr2.txt。
[dmdba@lei2 ~]$ vi /home/dmdba/fldr2.txt
添加:
1 1|2022-09-06
2 2|2023-09-06
3 3|2024-09-06
44|aaaa-bbb-ccc
2.2.3创建控制文件
创建控制文件/home/dmdba/fldr2.ctl
[dmdba@lei2 ~]$ vi /home/dmdba/fldr2.ctl
添加:
LOAD DATA
INFILE '/home/dmdba/fldr2.txt'
INTO TABLE lei.fldr2
FIELDS '|'
(
C1 TERMINATED BY ' ',
C2,
C3 DATE FORMAT 'yyyy-mm-dd'
)
2.2.4dmfldr导入数据
[dmdba@lei2 ~]$ dmfldr userid=SYSDBA/SYSDBA@192.168.0.2:5236 control=\'/home/dmdba/fldr2.ctl\' badfile=\'/home/dmdba/fldr2.bad\'
dmfldr V8
控制文件:加载行数:全部每次提交服务器行数:50000跳过行数:0允许错误数:100是否直接加载:Yes是否插入自增列:No数据是否已按照聚集索引排序:No字符集:UTF-8数据文件共1个:
/home/dmdba/fldr2.txt错误文件:/home/dmdba/fldr2.bad目标表:LEI.FLDR2列名 包装数据类型 终止
C1 CHARACTER WHT
C2 CHARACTER |
C3 yyyy-mm-dd |行缓冲区数量: 2
任务线程数量: 1数据错误
3行记录已提交目标表:LEI.FLDR2
load success.
失败原因: 数据错误
3 行加载成功。
1 行由于数据错误没有加载。
1 行由于数据格式错误被丢弃。跳过的逻辑记录总数:0
读取的逻辑记录总数:4
拒绝的逻辑记录总数:11.172(ms)已使用SQL> select * from fldr2;行号 C1 C2 C3
---------- ----------- ----------- ----------
1 1 1 2022-09-06
2 2 2 2023-09-06
3 3 3 2024-09-06已用时间: 0.282(毫秒). 执行号:1005.[dmdba@lei2 ~]$ cat fldr2.bad
dmfldr: 2024-09-05 10:22:10 LEI->FLDR2 DMFLDR BAD FILEdmfldr: 2024-09-05 10:22:10 LEI->FLDR2 44|aaaa-bbb-ccc
2.3大字段数据导出
当 dmfldr 工作在导出模式即 MODE 为 OUT 时,dmfldr 生成大字段对应的数据文件名由 LOB_FILE_NAME 指定,若未指定默认为 dmfldr.lob,文件存放于LOB_DIRECTORY 指定的目录,如果未指定 LOB_DIRECTORY 则存放于指定的导出数据文件同一目录。
2.3.1创建表
[dmdba@lei2 ~]$ disql lei/leileilei服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.368(ms)
disql V8SQL> CREATE TABLE fldr3(C1 INT,C2 BLOB,C3 CLOB);
操作已执行
已用时间: 7.889(毫秒). 执行号:1006.SQL> INSERT INTO lei.fldr3 VALUES(1,0XAB121032DE,'abcdefg');
影响行数 1已用时间: 0.893(毫秒). 执行号:1007.
SQL> INSERT INTO lei.fldr3 VALUES(2,0XAB121032DE,'hijklmn');
影响行数 1已用时间: 0.393(毫秒). 执行号:1008.
SQL> INSERT INTO lei.fldr3 VALUES(3,0XAB121032DE,'opqrstu');
影响行数 1已用时间: 0.600(毫秒). 执行号:1009.
SQL> commit;
操作已执行
已用时间: 0.650(毫秒). 执行号:1010.
SQL> select * from fldr3;行号 C1 C2 C3
---------- ----------- ------------ -------
1 1 0xAB121032DE abcdefg
2 2 0xAB121032DE hijklmn
3 3 0xAB121032DE opqrstu已用时间: 0.674(毫秒). 执行号:1011.
2.3.2创建控制文件
创建控制文件/home/dmdba/fldr3.ctl
[dmdba@lei2 ~]$ vi /home/dmdba/fldr3.ctl
添加:
LOAD DATA
INFILE '/home/dmdba/fldr3.txt'
INTO TABLE lei.fldr3
FIELDS '|'
(
C1,
C2,
C3
)
2.3.3dmfldr导出数据
[dmdba@lei2 ~]$ dmfldr userid=SYSDBA/SYSDBA@192.168.0.2:5236 control=\'/home/dmdba/fldr3.ctl\' LOB_DIRECTORY=\'/home/dmdba/\' mode=\'out\'
dmfldr V8
3 rows is load out
export success.
3 行数据已导出
用时:1.565(ms)[dmdba@lei2 ~]$ cat fldr3.txt
1|dmfldr.lob:0:5|dmfldr.lob:5:7
2|dmfldr.lob:12:5|dmfldr.lob:17:7
3|dmfldr.lob:24:5|dmfldr.lob:29:7
[dmdba@lei2 ~]$ cat dmfldr.lob
defgklmnrstu[dmdba@lei2 ~]$[dmdba@lei2 ~]$ dmfldr userid=SYSDBA/SYSDBA@192.168.0.2:5236 control=\'/home/dmdba/fldr3.ctl\' LOB_DIRECTORY=\'/home/dmdba/\' LOB_FILE_NAME=\'fldr3.lob\' mode=\'out\'
dmfldr V8
3 rows is load out
export success.
3 行数据已导出
用时:0.999(ms)[dmdba@lei2 ~]$ cat fldr3.lob
defgklmnrstu[dmdba@lei2 ~]$
2.4DIRECT为TRUE时大字段数据的载入
2.4.1创建表
[dmdba@lei2 ~]$ disql lei/leileilei服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.368(ms)
disql V8SQL> CREATE TABLE fldr4(C1 INT,C2 BLOB,C3 CLOB);
操作已执行
已用时间: 7.889(毫秒). 执行号:1003.
2.4.2创建数据文件
创建数据文件/home/dmdba/fldr4.txt。
[dmdba@lei2 ~]$ vi /home/dmdba/fldr4.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
[dmdba@lei2 ~]$ vi testblob.txt
添加:
1|testblobtestblobtestblobtestblob1|testblobtestblobtestblobtestblob1
2|testblobtestblobtestblobtestblob2|testblobtestblobtestblobtestblob2
3|testblobtestblobtestblobtestblob3|testblobtestblobtestblobtestblob3
[dmdba@lei2 ~]$ vi testclob.txt
添加:
1|testclobtestclobtestclobtestclob1|testclobtestclobtestclobtestclob1
2|testclobtestclobtestclobtestclob2|testclobtestclobtestclobtestclob2
3|testclobtestclobtestclobtestclob3|testclobtestclobtestclobtestclob3
2.4.3创建控制文件
创建控制文件/home/dmdba/fldr4.ctl
[dmdba@lei2 ~]$ vi /home/dmdba/fldr4.ctl
添加:
OPTIONS
(
SKIP = 0
DIRECT = TRUE
INDEX_OPTION = 2
)
LOAD DATA
INFILE '/home/dmdba/fldr4.txt'
BADFILE '/home/dmdba/fldr4.bad'
INTO TABLE lei.fldr4
FIELDS '|'
(
C1,
C2,
C3
)
2.4.4dmfldr导入数据
[dmdba@lei2 ~]$ dmfldr userid=SYSDBA/SYSDBA@192.168.0.2:5236 control=\'/home/dmdba/fldr4.ctl\' LOB_DIRECTORY=\'/home/dmdba/\' LOG=\'/home/dmdba/dmfldr_fldr4.log\'
dmfldr V8
控制文件:加载行数:全部每次提交服务器行数:50000跳过行数:0允许错误数:100是否直接加载:Yes是否插入自增列:No数据是否已按照聚集索引排序:No字符集:UTF-8数据文件共1个:
/home/dmdba/fldr4.txt错误文件:/home/dmdba/fldr4.bad目标表:LEI.FLDR4列名 包装数据类型 终止
C1 CHARACTER |
C2 CHARACTER |
C3 CHARACTER |行缓冲区数量: 2
任务线程数量: 13行记录已提交目标表:LEI.FLDR4
load success.
3 行加载成功。
0 行由于数据错误没有加载。
0 行由于数据格式错误被丢弃。跳过的逻辑记录总数:0
读取的逻辑记录总数:3
拒绝的逻辑记录总数:00.940(ms)已使用
SQL> select * from fldr4;行号 C1 C2 C3
---------- ----------- -------------------------------------------------------------- ------------------------------
1 1 0x317C74657374626C6F62 1|testclob
2 2 0x74657374626C6F6274657374626C6F6274657374 testclobtestclobtest
3 3 0x7374626C6F6274657374626C6F62317C74657374626C6F6274657374626C stclobtestclob1|testclobtestcl已用时间: 0.606(毫秒). 执行号:1013.
2.5DIRECT为FALSE时大字段数据的载入
2.5.1创建表
[dmdba@lei2 ~]$ disql lei/leileilei服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.368(ms)
disql V8SQL> CREATE TABLE fldr5(C1 INT,C2 BLOB,C3 CLOB);
操作已执行
已用时间: 7.889(毫秒). 执行号:1003.
2.5.2创建数据文件
创建数据文件/home/dmdba/fldr5.txt。
[dmdba@lei2 ~]$ vi /home/dmdba/fldr5.txt
添加:
1|0x12d3c8a7|abcdefg
2|0x12a4cbac|hijlkmn
3|0x22d3c8b3|adefhjd
2.5.3创建控制文件
创建控制文件/home/dmdba/fldr5.ctl
[dmdba@lei2 ~]$ vi /home/dmdba/fldr5.ctl
添加:
OPTIONS
(
SKIP = 0
DIRECT = TRUE
INDEX_OPTION = 2
)
LOAD DATA
INFILE '/home/dmdba/fldr4.txt'
BADFILE '/home/dmdba/fldr4.bad'
INTO TABLE lei.fldr4
FIELDS '|'
(
C1,
C2,
C3
)
2.5.4dmfldr导入数据
[dmdba@lei2 ~]$ dmfldr userid=SYSDBA/SYSDBA@192.168.0.2:5236 control=\'/home/dmdba/fldr5.ctl\' LOG=\'/home/dmdba/dmfldr_fldr5.log\' direct=false blob_type=\'hex_char\'
dmfldr V8
控制文件:加载行数:全部每次提交服务器行数:50000跳过行数:0允许错误数:100是否直接加载:No是否插入自增列:No数据是否已按照聚集索引排序:No字符集:UTF-8数据文件共1个:
/home/dmdba/fldr5.txt错误文件:/home/dmdba/fldr5.bad目标表:LEI.FLDR5列名 包装数据类型 终止
C1 CHARACTER |
C2 CHARACTER |
C3 CHARACTER |3 rows processed.目标表:LEI.FLDR5
load success.
3 行加载成功。
0 行由于数据错误没有加载。
0 行由于数据格式错误被丢弃。跳过的逻辑记录总数:0
读取的逻辑记录总数:3
拒绝的逻辑记录总数:00.766(ms)已使用SQL> select * from fldr5;行号 C1 C2 C3
---------- ----------- ---------- -------
1 1 0x12D3C8A7 abcdefg
2 2 0x12A4CBAC hijlkmn
3 3 0x22D3C8B3 adefhjd已用时间: 0.636(毫秒). 执行号:1015.SQL> truncate table fldr5;
操作已执行
已用时间: 11.350(毫秒). 执行号:1016.[dmdba@lei2 ~]$ dmfldr userid=SYSDBA/SYSDBA@192.168.0.2:5236 control=\'/home/dmdba/fldr5.ctl\' LOG=\'/home/dmdba/dmfldr_fldr5.log\' direct=false blob_type=\'hex\'
dmfldr V8
控制文件:加载行数:全部每次提交服务器行数:50000跳过行数:0允许错误数:100是否直接加载:No是否插入自增列:No数据是否已按照聚集索引排序:No字符集:UTF-8数据文件共1个:
/home/dmdba/fldr5.txt错误文件:/home/dmdba/fldr5.bad目标表:LEI.FLDR5列名 包装数据类型 终止
C1 CHARACTER |
C2 CHARACTER |
C3 CHARACTER |3 rows processed.目标表:LEI.FLDR5
load success.
3 行加载成功。
0 行由于数据错误没有加载。
0 行由于数据格式错误被丢弃。跳过的逻辑记录总数:0
读取的逻辑记录总数:3
拒绝的逻辑记录总数:00.578(ms)已使用SQL> select * from fldr5;行号 C1 C2 C3
---------- ----------- ---------------------- -------
1 1 0x30783132643363386137 abcdefg
2 2 0x30783132613463626163 hijlkmn
3 3 0x30783232643363386233 adefhjd已用时间: 0.332(毫秒). 执行号:1017.
2.6自增列装载
1.当 DIRECT 参数为 FALSE 时, dmfldr 将把从数据文件中读取的自增列值作为目标值插入数据库表中,用户应当保证每一行的自增列的值符合自增列的规则,否则将造成数据混乱。
2.当 DIRECT 参数为 TRUE 时, dmfldr 提供了 SET_IDENTITY 参数(默认为 FALSE)对数据载入时自增列的处理进行设置:
① 如果指定 SET_IDENTITY 选项值为 TRUE,则 dmfldr 将把从数据文件中读取的自增列值作为目标值插入数据库表中,用户应当保证每一行的自增列的值符合自增列的规则,否则将造成数据混乱;
② 如果 SET_IDENTITY 选项值设置为 FALSE,则 dmfldr 将忽略数据文件中对应自增列的值,服务器将根据自增列定义和表中已有数据自动生成自增列的值插入每一行的对应列。
2.6.1创建表
[dmdba@lei2 ~]$ disql lei/leileilei服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.368(ms)
disql V8SQL> CREATE TABLE fldr6(C1 INT IDENTITY(1,1),C2 VARCHAR);
操作已执行
已用时间: 2.010(毫秒). 执行号:1018.
SQL> INSERT INTO fldr6(C2) VALUES('a');
影响行数 1已用时间: 0.734(毫秒). 执行号:1019.
SQL> INSERT INTO fldr6(C2) VALUES('b');
影响行数 1已用时间: 0.464(毫秒). 执行号:1020.
SQL> COMMIT;
操作已执行
已用时间: 0.679(毫秒). 执行号:1021.
SQL> select * from fldr6;行号 C1 C2
---------- ----------- --
1 1 a
2 2 b已用时间: 0.625(毫秒). 执行号:1022.
2.6.2创建数据文件
创建数据文件/home/dmdba/fldr6.txt。
[dmdba@lei2 ~]$ vi /home/dmdba/fldr6.txt
添加:
2|c
3|d
4|e
2.6.3创建控制文件
创建控制文件/home/dmdba/fldr6.ctl
[dmdba@lei2 ~]$ vi /home/dmdba/fldr6.ctl
添加:
OPTIONS
(
SKIP = 0
ROWS = 50000
INDEX_OPTION = 2
DIRECT=TRUE
SET_IDENTITY=FALSE
)
LOAD DATA
INFILE '/home/dmdba/fldr6.txt'
BADFILE '/home/dmdba/fldr6.bad'
INTO TABLE lei.fldr6
FIELDS '|'
(C1,
C2
)
2.6.4dmfldr导入数据
[dmdba@lei2 ~]$ dmfldr userid=SYSDBA/SYSDBA@192.168.0.2:5236 control=\'/home/dmdba/fldr6.ctl\' LOG=\'/home/dmdba/dmfldr_fldr6.log\'
dmfldr V8
控制文件:加载行数:全部每次提交服务器行数:50000跳过行数:0允许错误数:100是否直接加载:Yes是否插入自增列:No数据是否已按照聚集索引排序:No字符集:UTF-8数据文件共1个:
/home/dmdba/fldr6.txt错误文件:/home/dmdba/fldr6.bad目标表:LEI.FLDR6列名 包装数据类型 终止
C1 CHARACTER |
C2 CHARACTER |行缓冲区数量: 2
任务线程数量: 13行记录已提交目标表:LEI.FLDR6
load success.
3 行加载成功。
0 行由于数据错误没有加载。
0 行由于数据格式错误被丢弃。跳过的逻辑记录总数:0
读取的逻辑记录总数:3
拒绝的逻辑记录总数:00.950(ms)已使用SQL> select * from fldr6;行号 C1 C2
---------- ----------- --
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e已用时间: 0.288(毫秒). 执行号:1023.SQL> delete from fldr6 where c1>2;
影响行数 3已用时间: 0.822(毫秒). 执行号:1024.
SQL> commit;
操作已执行
已用时间: 0.676(毫秒). 执行号:1025.
SQL> select * from fldr6;行号 C1 C2
---------- ----------- --
1 1 a
2 2 b已用时间: 0.282(毫秒). 执行号:1026.[dmdba@lei2 ~]$ dmfldr userid=SYSDBA/SYSDBA@192.168.0.2:5236 control=\'/home/dmdba/fldr6.ctl\' LOG=\'/home/dmdba/dmfldr_fldr6_01.log\' DIRECT=TRUE SET_IDENTITY=TRUE
dmfldr V8
控制文件:加载行数:全部每次提交服务器行数:50000跳过行数:0允许错误数:100是否直接加载:Yes是否插入自增列:Yes数据是否已按照聚集索引排序:No字符集:UTF-8数据文件共1个:
/home/dmdba/fldr6.txt错误文件:/home/dmdba/fldr6.bad目标表:LEI.FLDR6列名 包装数据类型 终止
C1 CHARACTER |
C2 CHARACTER |行缓冲区数量: 2
任务线程数量: 13行记录已提交目标表:LEI.FLDR6
load success.
3 行加载成功。
0 行由于数据错误没有加载。
0 行由于数据格式错误被丢弃。跳过的逻辑记录总数:0
读取的逻辑记录总数:3
拒绝的逻辑记录总数:00.891(ms)已使用SQL> select * from fldr6;行号 C1 C2
---------- ----------- --
1 1 a
2 2 b
3 2 c
4 3 d
5 4 e已用时间: 0.296(毫秒). 执行号:1027.
更多内容请参考:https://eco.dameng.com
相关文章:

DMFLDR数据载入使用实践
1、DMFLDR概述 1.1DMFLDR功能介绍 dmfldr(DM Fast Loader)是 DM 提供的快速数据装载命令行工具。用户通过使用 dmfldr 工具能够把按照一定格式 排序的文本数据以简单、快速、高效的方式载入到 DM 数据库中,或把 DM 数据库中的数据按照一定格…...

发布 NPM 包时,终端显示发布成功但实际上版本并没有更新,可能是由于以下原因
如果发布仍然没有生效,可以检查以下几点: 版本号是否更新: 如果版本号没有更新,NPM 会拒绝发布新的包版本。运行以下命令以确保版本号增加了: bash 复制代码 npm version patch # 更新小版本号 正确的 NPM 注册表&a…...

Java学习Day57:碧水金睛兽!(Spring Cloud微服务1.0)
1.微服务入门 (1).单体架构与分布式架构 单体架构: 将业务的所有功能集中在一个项目中开发,打成一个包部署优点: 架构简单、部署成本低 ; 缺点: 耦合度高项目打包部署到Tomcat,用户直接访问。用户量增加后…...

物联网开发教程专栏介绍与专栏说明——列表目录查阅(持续更新)
阿齐Archie《物联网开发:完整实现单片机通信模组云服务器智能应用软件》专栏 为方便查阅学习本专栏,特整理专栏介绍与专栏说明 一、专栏介绍 物联网开发教程专栏目前有P1和P2系列,P1系列为《手把手完整实现STM32ESP8266MQTT阿里云APP应用》…...

uni-app实现app展示进度条在线更新以及定时更新提醒
需求:需要在app启动后进行检查更新,如果有更新就提示更新,可以点击确定更新或者暂时不更新,如果不更新,就将当前的时间进行缓存,并且再次进入时进行对比,只要超过一天时间就继续提醒检查更新 第…...

【Linux】进程间通信(命名管道、共享内存、消息队列、信号量)
作者主页: 作者主页 本篇博客专栏:Linux 创作时间 :2024年11月2日 命名管道: 如果我们想在不相关的进程之间交换数据,可以使用FIFO文件来做这项工作,它经常被称为命名管道。命名管道是一种特殊类型的文…...

[Android]从FLAG_SECURE禁止截屏看surface
在应用中,设置activity的flag为FLAG_SECURE就可以禁止截屏,截屏出来是黑色的, 试验一下, 注意事项 影响: 设置 FLAG_SECURE 标志后,用户将无法对该Activity进行截屏或录制屏幕。这个标志会影响所有屏幕录…...

python 五子棋小游戏
1. 实现效果 Python五子棋小游戏 2. 游戏规则 规则说明,五子棋人机对战游戏规则如下: Ⅰ 默认规则 - 五子棋规则 对局双方:各执一色棋子,一方持黑色棋子,另一方持白色棋子。棋盘与开局:空棋盘开局…...

JeecgBoot集成工作流实战教程
Activiti是一个轻量级的工作流程和业务流程管理(BPM)平台,它主要面向业务人员、开发人员和系统管理员。这个平台的核心是一个快速且可靠的Java BPMN 2流程引擎。Activiti是开源的,并且基于Apache许可证进行分发。它可以运行在任何…...

第三十章 章节练习商品列表组件封装
目录 一、需求说明 二、技术要点 三、完整代码 3.1. main.js 3.2. App.vue 3.3. MyTable.vue 3.4. MyTag.vue 一、需求说明 1. my-tag 标签组件封装 (1) 双击显示输入框,输入框获取焦点 (2) 失去焦点,隐藏输入框 (3) 回显标签信息 (4) 内…...

NumPy 高级索引
NumPy 高级索引 NumPy 是 Python 中用于科学计算的核心库之一,它提供了一个强大的N维数组对象和许多用于操作这些数组的函数。在 NumPy 中,除了基本的索引和切片操作外,还提供了高级索引功能,这使得您可以以更加灵活和高效的方式访问和操作数组中的数据。本文将详细介绍 N…...

C/C++常用编译工具链:GCC,Clang
目录 GNU Compiler Collection GCC的优势 编译产生的中间文件 Clang Clang的特点 什么是LLVM? Clang编译过程中产生的中间表示文件 关于Clang的调试 C 编译工具链中有几个主要的编译工具,包括: GNU Compiler Collection (GCC…...

let和war的区别
let和war的区别 看不懂图片,可以看视频教程...

[CUDA] stream使用笔记
文章目录 1. stream一般用法2. stream与event:3. stream异常的排查4. stream的异步与同步行为 1. stream一般用法 cudaStream_t stream_; cudaStreamCreate(&stream_); // create stream // some operators running on this stream_ cudaStreamSynchronize(str…...

第二课:开发工具
在本课中,我们将介绍一些常用的C开发工具,并附上下载链接,帮助你选择合适的工具进行开发。 1. DEVC DEVC 是一个轻量级的C开发工具,适合初学者使用。它提供了基本的代码编辑、编译和调试功能。 下载链接: DEVC 下载 2. Visual…...

Vue 学习随笔系列十三 -- ElementUI 表格合并单元格
ElementUI 表格合并单元格 文章目录 ElementUI 表格合并单元格[TOC](文章目录)一、表头合并二、单元格合并1、示例代码2、示例效果 一、表头合并 参考: https://www.jianshu.com/p/2befeb356a31 二、单元格合并 1、示例代码 <template><div><el-…...

对于一个含有直流和交流分量的信号,如何使用示波器正确显示并测出直流电压值和交流电压峰峰值?
对于一个含有直流(DC)和交流(AC)分量的混合信号,使用示波器来正确显示和测量其直流电压值和交流电压峰峰值需要选择适当的设置和方法。以下是详细的步骤: 所需设备 示波器电压探头 步骤一:连…...

移动混合开发面试题及参考答案
目录 什么是混合开发(Hybrid App)? 混合开发(Hybrid App)与原生开发相比有什么优缺点? 优点 缺点 混合开发(Hybrid App)的兴起原因是什么? 市场竞争和成本控制需求 技术发展和资源整合 人才资源的考量 Web App、Native App 和混合开发(Hybrid App)的区别是…...

命令行工具开发秘籍:从零开始创建实用Python脚本(如何创建Python命令行工具)
文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 创建命令行工具的基础🔖 在非模块化的环境中🔖 在模块化环境中📝 打包和安装模块📝 使用命令行工具⚓️ 相关链接 ⚓️📖 介绍 📖 如何将自己的Python模块打包成一个可在命令行中直接执行的工具?…...

Python - PDF 分割成单页、PDF 转图片(PNG)
文章目录 PDF 分割成一页页的 PDFPDF 转 PNGPDF 分割成一页页的 PDF import fitz def split_pdf(pdf_path, save_dir):source_pdf = fitz.open(pdf_path)# 遍历source_pdf中的每一页,page_number从0开始计数 for idx...

【网络】套接字编程——TCP通信
> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:TCP网络服务器简单模拟实现。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! > 专栏选自:…...

PyTorch实践-CNN-验证码识别
1 需求 GitHub - xhh890921/cnn-captcha-pytorch: 小黑黑讲AI,AI实战项目《验证码识别》 2 接口 含义 在optim.Adam接口中,lr参数代表学习率(Learning Rate)。学习率是优化算法中的一个关键超参数,它决定了在每次迭代…...

json和pb的比较
1.介绍 在数据序列化和通信领域,schema 指的是用于定义数据结构的模式或结构描述。它描述了数据的字段、类型、嵌套结构和约束,并在数据验证和解释上发挥重要作用。常见的 schema 格式包括 Protocol Buffers (proto)、JSON Schema、XML Schema 等。 Pr…...

Redis-基本了解
一、Redis 初识 Redis 是⼀种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的是,Redis 中的值可以是由string(字符串)、hash(哈希)、list(列表)…...

HarmonyOS第一课 06 构建更加丰富的页面-习题解析
判断题 1. Tabs组件可以通过接口传入一个TabsController,该TabsController可以控制Tabs组件进行页签切换。T 正确(True) 错误(False) 使用 this.tabsController.changeIndex(this.currentIndex); 可以切换页签 WebviewController提供了变更Web组件显示内容的接口…...

计算机的错误计算(一百四十三)
摘要 探讨 MATLAB 中 附近数的余弦函数的计算精度问题。 例1. 已知 计算 与 直接贴图吧: 另外,16位的正确值分别为 -0.3012758451921695e-7 与 -0.3765996542384011e-10(ISRealsoft 提供)。 容易看出,MATLAB的输…...

大数据之——Window电脑本地配置hadoop系统(100%包避坑!!方便日常测试,不用再去虚拟机那么麻烦)
之前我们的hadoop不管是伪分布式还是分布式,都是配置在虚拟机上,我们有的时候想要运行一些mapreduce、hdfs的操作,又要把文件移到虚拟机,又要上传hdfs,麻烦得要死,那么有的时候我们写的一些java、python的h…...

汽车固态电池深度报告
固态电池符合未来大容量二次电池发展方向,半固态电池已装车,高端长续航车型、e-VTOL 等方向对固态电池需求明确。固态电池理论上具备更高的能量密度、更好的热稳定性、更长的循环寿命等优点,是未来大容量二次电池发展方向。根据中国汽车动力…...

HTB-Cicada 靶机笔记
Cicada 靶机笔记 概述 HTB 的靶机 Cicada 靶机 靶机地址:https://app.hackthebox.com/machines/Cicada 很有意思且简单的 windows 靶机,这台靶机多次利用了信息枚举,利用不同的信息一步一步获得 root 权限 一、nmap 扫描 1)…...

使用DJL和PaddlePaddle的口罩检测详细指南
使用DJL和PaddlePaddle的口罩检测详细指南 完整代码 该项目利用DJL和PaddlePaddle的预训练模型,构建了一个口罩检测应用程序。该应用能够在图片中检测人脸,并将每张人脸分类为“戴口罩”或“未戴口罩”。我们将深入分析代码的每个部分,以便…...