
一、DMFLDR概述DMFLDR是达梦数据库提供的高性能数据批量装载/导出工具其核心功能模式功能数据流向IN导入将文本文件数据加载到数据库表文本文件→数据库表OUT导出将数据库表数据导出到文本文件数据库表→文本文件二、DMFLDR导入1、建表使用disql登录数据库创建两张表departments部门表、employees员工表。2、创建数据文件vi /home/dmdba/dept.txt创建部门数据包含20条部门记录用“|”分隔。vi /home/dmdba/emp.txt创建员工数据包含30条员工记录用“|”分隔。3、创建控制文件控制文件是DMFLDR的核心配置文件用于定义文本数据与数据库表之间的映射关系与装载规则。① OPTIONS( )全局选项块参数取值含义SKIP非负整数默认0跳过数据文件起始的行数ROWS正整数默认50000每次提交到服务器的行数DIRECT布尔值默认TRUETRUE快速装载直接把数据格式化成数据页写入磁盘FALSE普通INSERT效率低INDEX_OPTION1/2/3默认11数据装载时先排序装载完成后插入索引2数据装载时不维护索引装载完成后重建整个索引3数据装载的同时实时插入索引② LOAD DATA开始数据装载③ INFILE指定数据文件④ BADFILE指定错误记录文件⑤ APPEND INTO TABLE DEPARTMENTS装载模式、指定目标表模式含义使用场景APPEND在原有数据后面追加新数据增量导入REPLACE先清空表再插入新数据全量覆盖导入INSERT表必须是空的否则报错首次导入⑥ FIELDS ‘|’指定数据文件列分隔符⑦ 列名映射顺序必须与数据文件一致vi /home/dmdba/dept.ctl创建部门导入控制文件。vi /home/dmdba/emp.ctl创建员工导入控制文件。4、数据导入在bin目录下使用dmfldr命令分别执行部门表与员工表的数据导入。部门表成功导入20条记录员工表成功导入30条记录。三、DMFLDR导出1、创建控制文件vi /home/dmdba/dept_out.ctl创建部门导出控制文件。vi /home/dmdba/emp_out.ctl创建员工导出控制文件。2、数据导出在命令行最后添加参数mode‘OUT’表示数据导出。四、快速配置方式dmfldr支持三种参数配置方式优先级方式特点高命令行参数临时覆盖中控制文件OPTIONS块集中管理低dmfldr.ini文件全局默认1、命令行参数将前面部门导出控制文件dept_out.ctl的装载模式由默认的APPEND修改为REPLACE方便对比查看。不指定命令行参数时默认参考OPTIONS块中的参数即不跳过任何行。指定命令行参数时候skip5时参数优先级高于控制文件即跳过前5行数据。2、控制文件OPTIONS块本次实战采用该方式即在控制文件开头使用OPTIONS块集中配置所有运行参数。3、dmfldr.ini配置文件将常用参数写入dmfldr.ini配置文件作为系统默认值适用于全局统一设置。五、分隔符1、行分隔符在【INFILE ‘指定数据文件路径’】后通过【STR X ‘分隔符’】指定行分隔符Linux默认0x0AWindows默认0x0D0A自定义字符串作为行分隔符2、列分隔符在【FILEDS】后通过【TERMINATED BY ‘分割符’】指定列分隔符包含“|”、“,”、X‘09’。六、错误处理dmfldr在数据转换过程中遇到错误时① 跳过错误行继续处理后续数据② 错误行完整记录保存在BADFILE指定文件中③ 若累计错误数超过ERRORS设定值则停止装载向员工数据文件emp.txt追加一条错误数据日期格式错误工资字段非法然后执行导入并设置容错数ERRORS50。执行结果显示30行数据加载成功1行因数据错误被拒绝加载。错误数据被记录在emp.bad文件中便于数据修复。七、应用例子—条件过滤vi /home/dmdba/emp1.ctl创建条件过滤的用户导入控制文件。通过WHEN子句实现条件过滤仅装载指定条件的数据行。执行导入后EMPLOYEES员工表仅保留部门ID为90的三条记录设置REPLACE所以前面30条数据被目前3条数据覆盖。八、总结1、文章总结了DMFLDR工具教程包括导入、导出、快速配置方式、分隔符等2、更多细节及高级配置请参阅达梦官方文档https://eco.dameng.com