注册
dmfldr快速装载工具学习
专栏/培训园地/ 文章详情 /

dmfldr快速装载工具学习

阿白 2025/04/24 101 0 0
摘要

1. 工具介绍

在数据仓库建设、系统迁移或大数据处理场景中,快速高效地将数据导入数据库是常见需求。

dmfldr 是达梦数据库的命令行数据装载工具,采用客户端与服务器分离架构,支持 CSV、文本等格式的数据导入导出。其核心优势包括高效性(支持并行处理)、灵活性(支持多种参数按需配置)。其核心功能包括数据导入(将文本文件如 CSV、TXT 等批量导入数据库表)、数据导出(将数据库表内容导出为文本文件)。


2. 常用参数说明

参数 说明
USERID 必填,格式:用户名/密码@IP:端口(例:SYSDBA/SYSDBA@127.0.0.1:5236
CONTROL 必填,控制文件路径(定义数据格式、目标表等)
MODE 操作模式:IN(导入)、OUT(导出)
DIRECT 是否使用快速方式装载(默认 TRUE,性能优先)
SKIP 跳过数据文件的前 N 行(常用于跳过表头)
ERRORS 允许的最大错误行数(超过则终止任务)
ROWS 提交频次(每批次提交的行数)
CHARACTER_CODE 字符编码(如 UTF-8

3. 实战测试

3.1 生成测试数据

--新建表 CREATE TABLE USER_INFO ( user_id INT PRIMARY KEY, -- 用户ID username VARCHAR(50), -- 用户名 gender CHAR(1), -- 性别(M: 男,F: 女) birth_date DATE, -- 生日 address VARCHAR(200), -- 地址 phone_number VARCHAR(20) -- 电话号码 ); --插入测试数据 INSERT INTO USER_INFO (user_id, username, gender, birth_date, address, phone_number) VALUES (1, '张三', 'M', TO_DATE('1990-01-15', 'YYYY-MM-DD'), '北京市朝阳区', '13812345678'), (2, '李四', 'F', TO_DATE('1992-03-22', 'YYYY-MM-DD'), '上海市浦东新区', '13987654321'), (3, '王五', 'M', TO_DATE('1988-07-30', 'YYYY-MM-DD'), '广州市天河区', '13711223344'), (4, '赵六', 'F', TO_DATE('1995-11-05', 'YYYY-MM-DD'), '深圳市南山区', '13699887766'), (5, '孙七', 'M', TO_DATE('1986-02-17', 'YYYY-MM-DD'), '成都市锦江区', '13555667788'); commit;

3.2 dmfldr 数据导出

--新建控制文件 vi /home/dmdba/out.ctl -------文件内容------- LOAD DATA INFILE '/home/dmdba/out.txt' -- 指定数据文件路径 INTO TABLE "SYSDBA"."USER_INFO" -- 指定目标表 FIELDS '|' -- 指定数据字段的分隔符,这里是 '|'。还可以用逗号',' -------文件内容------- --dmfldr数据导出 cd /home/dmdba/dmdbms/bin ./dmfldr SYSDBA/SYSDBA control=\'/home/dmdba/out.ctl\' MODE=\'OUT\' --查看数据 cat /home/dmdba/out.txt

image.png

3.3 dmfldr 数据导入

--清空表数据(注意:导入数据前需手动创建好表空间) truncate TABLE SYSDBA.USER_INFO; select * from "SYSDBA"."USER_INFO"; --新建控制文件 vi /home/dmdba/input.ctl -------文件内容------- LOAD DATA INFILE '/home/dmdba/out.txt' INTO TABLE "SYSDBA"."USER_INFO" FIELDS '|' -------文件内容------- --dmfldr数据导入 cd /home/dmdba/dmdbms/bin ./dmfldr SYSDBA/SYSDBA control=\'/home/dmdba/input.ctl\' --查看数据 select * from "SYSDBA"."USER_INFO";

image.png

4. 注意事项

  1. 若数据文件第一行存在标题,可利用 SKIP=1 跳过第一行;同理,若前十条数据不需要,也可以通过 SKIP=10 跳过前十行数据。
  2. 在使用 dmfldr 时,如果存在单引号 ',需在单引号前添加转义符 \,否则无法顺利执行。
  3. 控制文件中的 FIELDS 参数使用哪种符号,取决于数据文件中字段的分隔符:
    • 若使用垂直分隔符 |,则 FIELDS 应设置为 |
    • 若使用逗号 ,,则应设置为 ,
  4. 如果 CSV 文件的数据量较大,使用 DMFLDR 工具进行数据加载,可能会比传统的手动导入或其他方法更高效。
  5. 在编码不一致时,可通过 CHARACTER_CODE 显式指定文件编码。
  6. 导入大表数据时,可在导入前禁用目标表的非唯一索引,待数据加载完成后再重新构建索引,以提高导入速度。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服