Oracle SQL*Loader 与 SQLULDR2 学习指南

1.SQL*Loader (sqlldr)
1.1 概述
作用:Oracle 官方工具,用于将外部数据文件(如 CSV、文本文件)高效加载到数据库表中。

特点:
支持多种数据格式(定长、变长、CSV)。
支持直接路径加载(Direct Path Load),绕过 SQL 引擎,提升性能。
提供错误记录和丢弃无效数据的功能。

1.2 核心组件
控制文件 (Control File):定义数据加载规则,包括数据文件路径、目标表、字段映射等。
数据文件 (Data File):存储待加载的原始数据。
日志文件 (Log File):记录加载过程的详细信息。
错误文件 (Bad File):存储无法加载的数据。
废弃文件 (Discard File):存储因条件过滤被丢弃的数据。

1.3 使用步骤
步骤 1:编写控制文件

-- 示例:加载 CSV 文件到 EMP 表
OPTIONS (SKIP=1) -- 跳过 CSV 文件标题行
LOAD DATA
INFILE 'emp_data.csv' -- 数据文件路径
BADFILE 'emp_bad.bad' -- 错误文件
DISCARDFILE 'emp_discard.dsc' -- 废弃文件
APPEND INTO TABLE EMP -- 目标表,APPEND 表示追加数据
FIELDS TERMINATED BY ',' -- 字段分隔符
TRAILING NULLCOLS -- 允许末尾空列
(
  EMPNO,
  ENAME,
  JOB,
  MGR,
  HIREDATE DATE "YYYY-MM-DD", -- 日期格式转换
  SAL,
  COMM,
  DEPTNO
)

步骤 2:执行 SQL*Loader 命令

sqlldr userid=scott/tiger@orcl control=loader.ctl log=loader.log

1.4 高级功能
并行加载:使用 PARALLEL 参数加速大数据加载。
直接路径加载:通过 DIRECT=TRUE 提升性能(需注意表锁定)。
条件过滤:使用 WHEN 子句过滤数据。
数据转换:在控制文件中使用 SQL 函数(如 TO_DATE, SUBSTR)。

2.SQLULDR2 (SQLLDR 的增强工具)
2.1 概述
作用:第三方工具(非 Oracle 官方),用于从 Oracle 数据库高效导出数据到文件。

特点:
性能远超传统 UTL_FILE 或 SPOOL。
支持多线程导出。
输出格式灵活(CSV、定长、自定义分隔符)。
支持压缩和拆分文件。

2.2 安装与使用
下载:从第三方网站(如 www.sqluldr2.com)获取二进制文件。

基本命令:

sqluldr2 user=scott/tiger@orcl query="SELECT * FROM EMP" file=emp_data.csv

2.3 常用参数
参数 说明
user 数据库连接字符串
query 导出数据的 SQL 查询
file 输出文件路径
head 是否包含列标题(默认为 yes)
field 字段分隔符(默认 ,)
charset 输出文件字符集(如 UTF8)
thread 多线程导出(提升性能)
split 拆分文件大小(如 100M)

2.4 示例

#导出数据为 CSV,使用 4 线程,文件拆分为 100MB
sqluldr2 user=scott/tiger@orcl query="SELECT * FROM EMP" \
file=emp_data.csv head=yes field=, charset=UTF8 thread=4 split=100M

3.常见问题与解决
3.1 SQL*Loader
错误 ORA-00942:检查用户是否有目标表的权限。
日期格式错误:确保控制文件中的日期格式与数据文件匹配。
性能慢:尝试启用 DIRECT=TRUE 或调整 READSIZE/BINDSIZE。

3.2 SQLULDR2
中文乱码:指定正确的字符集(如 charset=ZHS16GBK)。
内存不足:减少线程数(thread)或增加 rows 参数。
权限问题:确保导出目录有写入权限。

4.学习资源
官方文档:
SQL*Loader Documentation
SQLULDR2 需参考第三方文档或 README。

书籍推荐:
《Oracle Database Utilities 19c》
《Oracle SQL*Loader: The Definitive Guide》

社区资源:
Oracle Forums (community.oracle.com)
Stack Overflow (stackoverflow.com)

内容来自互联网,如有侵权通知后删除 sqluldr2是一款Oracle数据快速导出工具,包含32、64位程序,sqluldr2在大数据量导出方面速度超快,能导出亿级数据为excel文件,另外它的导入速度也是非常快速,功能是将数据以TXT/CSV等格式导出,有需要的赶快下载吧! oracle数据导出工具sqluldr2 基本简介   下载完sqluldr解压后,文件夹内容如下:   sqluldr2.exe 用于32位windows平台;   sqluldr2_linux32_10204.bin 适用于linux32位操作系统;   sqluldr2_linux64_10204.bin 适用于linux64位操作系统;   sqluldr264.exe 用于64位windows平台。 使用方法   1、首先将sqluldr2.exe复制到执行目录下,即可开始使用   2、查看help 帮助 sqluldr2 官方下载   3、执行数据导出命令   3.1、常规导出   sqluldr2 test/test@127.0.1.1/orcl query="select * from temp_001" head=yes file=d:\tmp001.csv   说明:head=yes 表示输出表头 oracle数据导出工具sqluldr2   3.2、使用sql参数   sqluldr2 test/test@127.0.1.1/orcl sql=test_sql.sql head=yes file=d:\tmp001.csv   test_sql的内容为:   select * from temp_001 sqluldr2 官方下载   3.3、使用log参数   当集成sqluldr2在脚本中时,就希望屏蔽上不输出这些信息,但又希望这些信息能保留,这时可以用“LOG”选项来指定日志文件名。   sqluldr2 test/test@127.0.1.1/orcl sql=test_sql.sql head=yes file=d:\tmp001.csv log=+d:\tmp001.log oracle数据导出工具sqluldr2   3.4、使用 table 参数   当使用 table 参数时,在目录下会生成对应的ctl控制文件,如下语句会生成temp_001_sqlldr.ctl文件。   sqluldr2 test/test@127.0.1.1/orcl query="select * from temp_001" table=temp_001 head=yes file=d:\tmp001.csv sqluldr2 官方下载   生成的控制文件temp_001_sqlldr.ctl的内容如下: oracle数据导出工具sqluldr2   4、主要参数说明   Field 分隔符 指定字段分隔符,默认为逗号   record 分隔符 指定记录分隔符,默认为回车换行,Windows下的换行   quote 引号符 指定非数字字段前后的引号符   例如现在要改变默认的字段分隔符,用“#”来分隔记录,导出的命令如下所示:   sqluldr2 test/test sql=tmp.sql field=#   在指定分隔符时,可以用字符的ASCII代码(0xXX,大写的XX为16进制的ASCII码值)来指定一个字符,常用的字符的ASCII代码如下:   回车=0x0d,换行=0x0a,TAB键=0x09,|=0x7c,&=0x26,双引号=0x22,单引号=0x27   在选择分隔符时,一定不能选择会在字段值中出现的字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值