在达梦数据库(DM Database)中,dmldr 是一个高效的数据导入导出工具,支持并行加载和多种数据格式。以下是使用 dmldr 工具进行数据导入导出的详细步骤和注意事项:

一、dmldr 工具简介

**功能:**支持从文本文件(CSV、TXT等)批量导入数据到数据库表,或从数据库表导出数据到文件。

**特点:**并行操作、高性能、支持自定义格式。

命令格式:

dmldr userid=用户名/密码@主机:端口 control='控制文件路径'

二、数据导出(表 → 文件)

1. 编写控制文件(导出)
创建一个 .ctl 控制文件(如 export.ctl),内容示例:

OPTIONS (
    DIRECTORY='/opt/data',  -- 导出文件存放目录
    BADFILE='export.bad',   -- 错误记录文件
    LOG='export.log'        -- 日志文件
)
UNLOAD TABLE EMPLOYEE       -- 要导出的表名
FIELDS TERMINATED BY ','    -- 字段分隔符(例如CSV用逗号)
(
    ID,
    NAME,
    AGE
)

2. 执行导出命令

dmldr userid=SYSDBA/SYSDBA@localhost:5236 control='export.ctl'

导出文件默认生成在 DIRECTORY 指定的目录中,文件名格式为 <表名>.dat(如 EMPLOYEE.dat)。

三、数据导入(文件 → 表)

1. 准备数据文件
确保数据文件(如 data.csv)格式与控制文件定义的字段分隔符一致,例如:

1001,张三,30
1002,李四,25

2. 编写控制文件(导入)
创建 import.ctl 文件,内容示例:

OPTIONS (
    DIRECTORY='/opt/data',  -- 数据文件所在目录
    BADFILE='import.bad',   -- 错误记录文件
    LOG='import.log',       -- 日志文件
    ERRORS=50               -- 允许的最大错误数
)
LOAD DATA
INTO TABLE EMPLOYEE         -- 目标表名
FIELDS TERMINATED BY ','    -- 字段分隔符
(
    ID,
    NAME,
    AGE
)

3. 执行导入命令

dmldr userid=SYSDBA/SYSDBA@localhost:5236 control='import.ctl'

四、关键参数说明

**并行加载:**添加 PARALLEL=4 开启并行(线程数根据硬件调整)。

**字符集:**指定数据文件编码,如 CHARACTERSET=‘UTF8’

**批量提交:**BATCH_ROWS=10000 每批提交的行数,优化性能。

**跳过标题行:**SKIP=1 忽略CSV文件的首行标题。

五、常见问题解决

1.权限不足

确保用户有表的 **INSERT(导入)**或 SELECT(导出)权限。

检查数据文件目录的读写权限。

2.字段不匹配

控制文件中定义的字段顺序、类型需与表结构一致。

数据文件中的特殊字符(如换行符)需转义。

3.字符集乱码

在控制文件中添加 CHARACTERSET=‘GBK’UTF8,与数据文件编码一致。

4.日志分析

检查 BADFILELOG 文件定位错误原因(如字段超长、数据类型不符)。

六、性能优化建议

使用并行加载(PARALLEL)和多批次提交(BATCH_ROWS)。

避免在导入过程中触发触发器或约束,可先禁用再恢复。

确保数据文件与数据库服务器在同一磁盘,减少I/O延迟。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐