当前位置: 首页 > news >正文

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)

相关文章:

  • 服务器部署RocketMQ----Docker方式
  • LLM后训练:解锁大型语言模型推理能力的关键路径
  • 软件测试之单元测试unittest库使用、参数化、unittestteport
  • Java中的volatile关键字
  • AI自动文献综述——python先把知网的文献转excel
  • 免费高质量贴图(Textures) 网站推荐
  • RabbitMq C++客户端的使用
  • DeepSeek大模型在政务服务领域的应用
  • 四种 No-SQL
  • 应急响应靶机练习-Linux2
  • 手搓智能音箱——语音识别及调用大模型回应
  • 用Java来创建数字游戏
  • 基于springboot的无人智慧超市管理系统
  • 蓝桥杯2023年第十四届省赛真题-整数删除 暴力-->链表+小根堆
  • 203.移除链表元素
  • 免费影视片库
  • HarmonyOS第22天:解锁鸿蒙服务开发
  • 二叉树题目
  • 冷热数据分层存储:提高效率与降低成本
  • 数据结构(泛型)
  • 乌克兰官员与法德英美四国官员举行会谈
  • 俄乌官员即将在土耳其会谈,外交部:支持俄乌开启直接对话
  • 网易一季度净利增长三成,丁磊:高度重视海外游戏市场
  • 辽宁盘山县一乡镇幼儿园四名老师被指多次殴打一女童,均被行拘
  • 网约车座椅靠背张贴“差评者得癌症”,如祺出行:未收到投诉无法处理
  • 马上评|“为偶像正名”的正确做法是什么