在数据仓库建设、系统迁移或大数据处理场景中,快速高效地将数据导入数据库是常见需求。
dmfldr 是达梦数据库的命令行数据装载工具,采用客户端与服务器分离架构,支持 CSV、文本等格式的数据导入导出。其核心优势包括高效性(支持并行处理)、灵活性(支持多种参数按需配置)。其核心功能包括数据导入(将文本文件如 CSV、TXT 等批量导入数据库表)、数据导出(将数据库表内容导出为文本文件)。
参数 | 说明 |
---|---|
USERID | 必填,格式:用户名/密码@IP:端口 (例:SYSDBA/SYSDBA@127.0.0.1:5236 ) |
CONTROL | 必填,控制文件路径(定义数据格式、目标表等) |
MODE | 操作模式:IN (导入)、OUT (导出) |
DIRECT | 是否使用快速方式装载(默认 TRUE ,性能优先) |
SKIP | 跳过数据文件的前 N 行(常用于跳过表头) |
ERRORS | 允许的最大错误行数(超过则终止任务) |
ROWS | 提交频次(每批次提交的行数) |
CHARACTER_CODE | 字符编码(如 UTF-8 ) |
--新建表
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;
--新建控制文件
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
--清空表数据(注意:导入数据前需手动创建好表空间)
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";
SKIP=1
跳过第一行;同理,若前十条数据不需要,也可以通过 SKIP=10
跳过前十行数据。dmfldr
时,如果存在单引号 '
,需在单引号前添加转义符 \
,否则无法顺利执行。FIELDS
参数使用哪种符号,取决于数据文件中字段的分隔符:
|
,则 FIELDS
应设置为 |
;,
,则应设置为 ,
。DMFLDR
工具进行数据加载,可能会比传统的手动导入或其他方法更高效。CHARACTER_CODE
显式指定文件编码。文章
阅读量
获赞