很多人都没用过的轻量级Oracle数据库数据导出工具——性能超赞

一个写代码的夜猫子 2017-09-22 16:58

SQLLDR2 介绍

每周发表一篇数据库或大数据相关的帖子,敬请关注

1. 工具介绍

Sqluldr2(SQL * UnLoader 第二版)是灵活与强大的 Oracle 文本导出程序,已被大众使 用许多年了,有上千个国内外 DBA 在使用它或使用过它,并在使用的过程中提出了宝贵实 用的改进需求,在完善了众多真实客户的需求后,最终形成了现在的稳定版本。Oracle 有一 个工具叫 SQL*Loader(sqlldr)是用来将文本文件装载到数据库中的,而这个工具是用来将 Oracle 中的数据导出成文本的,因此取名为 SQL*UnLoader(sqluldr),而最后的 2 是因为第一 版是用 OCI 7 接口写的,而现在发布的是用 OCI 8 接口重写的,是第二代的意思。学会这样 的好工具,在遇到数据迁移需求时,可以让 DBA 轻松自在地完成任务。

1.1. 导出效率:

阿里巴巴(Alibaba)集团的 DBA 几年前就开始用 sqluldr 从生产系统中导出巨量数据给数据仓库分析,并在真实应用环境下 创下了我所见过的文本导出速度的最高记录, 总共用了 595 秒钟导出了 171 135 273 条记录, 平均每秒 287622 条记录。

1.2. 下载地址:

很多人都没用过的轻量级Oracle数据库数据导出工具——性能超赞_第1张图片

2. 工具安装

2.1. 下载安装包并解压

很多人都没用过的轻量级Oracle数据库数据导出工具——性能超赞_第2张图片

2.2. 配置环境变量

要运行Sqluldr2必须要安装Oracle的客户端(Oracle客户端的安装方法不在这里讨论),并配置LD_LIBRARY_PATH环境变量.

export LD_LIBRARY_PATH=/opt/oracle/product/11.2.0/dbhome_1/lib:$LD_LIBRARY_PATH

将其中的/opt/oracle/product/11.2.0/dbhome_1/lib替换成你自己的客户端安装目录.

2.3. 执行实例

2.3.1. 查看帮助

选项 格式 作用

query select 指定一个SQL 语句,通常用双引号括直来。

sql 文件名 指定包括SQL 语句的文本文件名。

field 分隔符 指定字段分隔符,默认为逗号

record 分隔符 指定记录分隔符,默认为回车换行,Windows 下的换行

2.3.2. 导出一个表的全部数据

很多人都没用过的轻量级Oracle数据库数据导出工具——性能超赞_第3张图片

1258万条数据,导出只需要100秒左右,效率还是可以的。

2.3.3. 导出一个表的部分数据

很多人都没用过的轻量级Oracle数据库数据导出工具——性能超赞

2.3.4. 导出时指定列分隔符

在上面导出时导出的文件内容如下

很多人都没用过的轻量级Oracle数据库数据导出工具——性能超赞_第4张图片

可以看出列分隔符为“,”,你也可以手动指定列分隔符.

很多人都没用过的轻量级Oracle数据库数据导出工具——性能超赞

通过field属性手动指定列分隔符.同理你也可以通过record属性指定行分隔符.

2.3.5. 指定导出文件的风格

通过text属于指定导出文件的风格

很多人都没用过的轻量级Oracle数据库数据导出工具——性能超赞

可以看出在列类型为varchar2和date的列的导出数据上分别加了双引号.

2.3.6. 优化

array 数字 指定 Array Fetch 的大小

read 数字 Oracle 一次读的最大块数

sort 数字(单位:MB) 指定排序区的大小

hash 数字(单位:MB) 指定 Hash 区的大小

serial yes 指定当全表扫描时用 direct path read

很多人都没用过的轻量级Oracle数据库数据导出工具——性能超赞_第5张图片

通过指定array的大小为20000后,发现导出的速度相比之前快了很多,1258万条数据只用了17秒.其余的几个属性请自己动手验证.

你可能感兴趣的:(很多人都没用过的轻量级Oracle数据库数据导出工具——性能超赞)