注册
dmfldr快速上手
培训园地/ 文章详情 /

dmfldr快速上手

云淡风轻 2025/06/20 293 1 0

dmfldr快速上手:从准备到执行​

​1. 核心概念:控制文件(Control File)​​
dmfldr通过控制文件定义数据加载规则,相当于“加载任务的说明书”。它需要明确以下信息:

数据文件路径(INFILE)
目标表结构(INTO TABLE)
字段分隔符、数据类型映射
特殊处理逻辑(如跳过行、默认值、错误处理)
​控制文件语法示例​(以CSV文件导入USER_INFO表为例):

OPTIONS (ERRORS=5000, LOG=load_user_info.log, PARALLEL=2) -- 全局参数:错误行上限、日志路径、并行数
LOAD DATA -- 开始加载
INFILE '/data/user_info.txt' -- 数据文件路径(本地或服务器端)
APPEND INTO TABLE USER_INFO -- 追加模式(可选:TRUNCATE先清空表)
FIELDS TERMINATED BY ',' -- 字段分隔符(常用逗号)
OPTIONALLY ENCLOSED BY '"' -- 可选引号(处理含逗号的字段内容)
TRAILING NULLCOLS -- 允许末尾字段为空
(
USER_ID POSITION(1:10) INTEGER EXTERNAL, -- 字段1:位置1-10,整数类型(外部格式)
USER_NAME POSITION(11:30) CHAR, -- 字段2:位置11-30,字符类型
REG_DATE POSITION(31:40) DATE 'YYYY-MM-DD' -- 字段3:位置31-40,日期类型(格式指定)
)
SKIP=1 -- 跳过首行(标题行)

​2. 操作步骤:从准备到执行​
​Step 1:准备数据文件与环境​

确保目标表已存在且字段顺序、类型与控制文件匹配(或通过POSITION显式指定位置)。
数据文件需上传至数据库服务器(或客户端可通过网络路径访问,需配置权限)。
确认dmfldr工具路径(通常在$DM_HOME/bin目录下,Linux需赋予执行权限:chmod +x dmfldr)。
​Step 2:编写控制文件​
根据数据文件格式调整控制文件(如分隔符、字段位置、日期格式)。关键是确保FIELDS子句与数据文件列一一对应,避免错位。

​Step 3:执行加载命令​
通过命令行调用dmfldr,指定控制文件路径、数据库连接信息(用户/密码/实例):

Linux环境示例

./dmfldr userid=sysdba/SYSDBA@localhost:5236 control=/data/load_user_info.ctl

Windows环境示例(CMD)

dmfldr.exe userid=sysdba/SYSDBA@localhost:5236 control=D:\data\load_user_info.ctl
​3. 关键参数说明(OPTIONS子句)​​
通过OPTIONS可以精细控制加载行为,常用参数:

ERRORS=N:允许的最大错误行数(超过则终止加载,默认0即不允许错误)。
LOG=filename:指定日志文件路径(记录加载详情、错误信息)。
PARALLEL=N:并行加载的线程数(根据CPU核心数调整,建议不超过4)。
SKIP=N:跳过数据文件前N行(如标题行)。
DIRECT=TRUE:启用直接路径加载(绕过SQL引擎缓存,速度更快,但可能锁定表)。

高级优化:让dmfldr“快上加快”​​
​1. 并行加载(PARALLEL参数)​​
dmfldr支持多线程并行读取数据文件并写入数据库,显著提升大文件处理速度。只需在OPTIONS中设置PARALLEL=4(根据CPU核心数调整),工具会自动拆分任务。

​注意​:并行加载时,目标表需无索引或约束(或提前禁用),否则可能因锁竞争降低效率(加载完成后重建索引)。

​2. 禁用约束与索引(加载前)​​
数据加载时,索引更新和约束校验会消耗大量资源。​加载前临时禁用约束、删除索引,加载后重建,可提升30%-50%速度。

​操作示例​:

-- 禁用主键约束(假设约束名为PK_USER_INFO)
ALTER TABLE USER_INFO DISABLE CONSTRAINT PK_USER_INFO;

-- 删除非必要索引(如普通二级索引)
DROP INDEX IDX_USER_NAME;

-- 加载数据...

-- 重建索引(带并行优化)
CREATE INDEX IDX_USER_NAME ON USER_INFO(USER_NAME) PARALLEL 4;

-- 启用约束(带索引自动重建)
ALTER TABLE USER_INFO ENABLE CONSTRAINT PK_USER_INFO;

​3. 调整数据库参数(提升底层性能)​​
​增大缓冲池​:调整BUFFER_POOL_SIZE(默认4G,大内存服务器可设为8G+),减少磁盘I/O。
​关闭自动提交​:加载时使用SET AUTOCOMMIT OFF,最后一次性提交,减少事务刷盘次数。
​使用裸设备/高速存储​:数据文件、日志文件存放于SSD或裸分区,避免文件系统元数据开销。
​4. 处理脏数据(错误行)​​
dmfldr支持将错误行记录到指定文件(REJECT参数),方便后续排查。在控制文件中添加:

OPTIONS (REJECT=reject.txt) -- 错误行写入reject.txt
LOAD DATA ...

注意事项与常见问题​
​数据格式一致性​:确保数据文件的字段顺序、类型与控制文件完全匹配(尤其是日期、数值格式)。
​字符集匹配​:数据文件编码需与数据库字符集一致(如ZHS16GBK),避免乱码。
​大文件分割​:若单文件超过系统限制(如Linux的ARG_MAX),可拆分为多个小文件并行加载。
​权限要求​:执行用户需具备INSERT、CREATE INDEX等权限,且数据文件路径对数据库服务器可访问(或通过客户端网络路径)。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服