暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
sqluldr2超详细使用教程-loracle数据导出工具及方法
3794
33页
39次
2020-02-13
10墨值下载
作者:楼方鑫 (网名:d.c.b.a 个人主页http://www.anysql.net
作者:楼方鑫 (网名:d.c.b.a 个人主页http://www.anysql.net
文本导出
文本导出文本导出
文本导出
将数据导出成文本文件,在其他数据库(如 SybaseSQL ServerMySQL)中看起来
是一件很容易的事,因为有官方的类似工具bcp或命令(SELECT INTO LOAD DATA)
但在 Oracle 数据库上要做好这件事情却并非易事,Oracle 即没有这样的工具,也没有提
这样的命令,因此经常看到论坛上有人在问如何将 Oracle 的数据快速导出成文本。回想
从大学毕业从 IT 业开始到现在,在许多项目中都遇到了这样的需求,也用过数种不
的语言(JavaPowerBuilderPerl )实现过这个功能,但以前已经实现的每一种都不是最
佳的,始终有些缺憾。
刚毕业时当程序员,第一年用 Developer 2000,面对的所有数据库都 Oracle没有文
本导出要求,学会了 Oracle 的导入导出(exp/imp)功能。第二年用 Power Builder,面对
数据库就有 Oracle Sybase,就遇到过文本导出的需求,用 Power Builder 的数据管道实
过,都是结合在具体项目中使用单独用的很少,也不方便,为了一个文本导出功能需要一
个很大的运行环境,并且速度也不快。后来 Java 流行,用 JDBC 实现了一个,算是比较
量级的了,基本 Java 的运行环境哪儿都有,在测试速度时,发现与 OCI 程序比要达到
样的速度,运行 Java 程序的机器上多耗了四倍的 CPU也就是用 Java 版本的文本导出程序
常常让客户端 CPU 跑满,因此无法面对更大量( GB)的数据导出。
开始做专职的 DBA 后,一开始也在找能实现文本导出的好工具,和许 DBA 一样在
asktom.oracle.com 上找到 Tom Kyte 写的两个脚本,一个是用 SQL*Plus spool 功能来实
现的,另一个是用 Pro*C 语言来写的程序。 spool 实现的不是很喜欢,第一速度不快,
二个不能指定任意字段分隔符,及记录分隔符Pro*C 本的在性能上很好,但在灵活性上
还是比较差,要实现当时想到的需求,一样要改源程序,并且Pro*C 的程序在编译后
难跨版本通用而这一点我比较看重于是就想到以这个高效程序为样本,写一个更灵活
用的文本导出程序。
刚好对 C 语言及 Oracle Call Interface 产生了一些兴趣,就拿这个任务来练手吧。没有想
到的是,为了这么一个小工具,前前后后五六年了还在不停地维护,根据不同用户提出的
改进需求完善程序,是当时没有始料到的事情。当然在整个过程中,得到了很多人的感谢
件,而我自已也体会到坚持的乐趣,也让我对更多的事情多一分坚持。
作者:楼方鑫 (网名:d.c.b.a 个人主页http://www.anysql.net
作者:楼方鑫 (网名:d.c.b.a 个人主页http://www.anysql.net
Sqluldr2
Sqluldr2 是灵活与强大的 Oracle 文本导出程序,已被大众使用三年多了有几千国内外
DBA 在使用它或使用过它,并在使用的过程中提出了宝贵实用的改进意见,在完善了众多
真实客户的需求后,最终形成了现在的稳定版本。Oracle 有一个工具 SQL*Loader(sqlldr)
是用来将文本文件装载到数据库中的,而我的工具是用来将 Oracle 中的数据导出成文本的,
因此取名为 SQL*UnLoader(sqluldr),而最后的 2 是因为第一版是用 OCI 7 接口写的,而现
在发布的是用 OCI 8 接口重写的,是第二代的意思。学会这样的好工具,在一定的场合可以
DBA 的某些工作做得更轻松自在。
文本方式有什么作用?文本方式是不同类型数据库数据交换的重要方式,从小的地
说,例如将一些 Oracle 能数据收集到 MySQL 中,进行分析和展示;从大的地方讲,sqluldr2
曾被用来在 Oracle 系统中导出大批量的数据,然后装载到数据仓库NCR Sybase IQ中。
阿里巴巴(Alibaba)集团 DBA 几年前就开始 sqluldr 从生产系统中导出巨量数据给数
据仓库分,并实应环境下下了见过文本导出速度高记,共用
595 秒钟导出了 171135273 条记录,平均每秒 287622 条记录。
或者用在不同字符集的同种数据库之间进行数据交换,如 US7ASCII 字符集的 Oracle
数据库和 ZHS16GBK 字符集的 Oracle 数据库进行中文信息交换,这时 Database Link 是不行
的。在某些系统中为了防止软件版本变迁的问题,而选择用最简可靠的文本方式来归档和永
久保存历史数据最近也有不少人 sqluldr2 来快速将数据导出成文本, GreenPlum
的海量数据分析处理系统提供数据。也有做搜索的,结合 sqluldr 的早期源代码,结合到商
品搜索引挚的数 dump 程序中。也有人整 sqluldr 的早期源代码到普通数据库与内存
据库的数据同步程序中。
更有国外的工程师,发邮件来谢谢我免费发布这个小工具,说这个工具被成功地用于某
些项目中,帮他们解决了数据迁移的问题。从个人网站的统计来看,源代码和预编译好的
执行文件的累计下载量已经突破 20000 大关。
Sqluldr2 工具的主要优点如下:
Oracle C 语言接口写成,短小精干,运行速度快。
0 rows exported at 2007-11-28 15:43:09
171135273 rows exported at 2007-11-28 15:53:04
of 33
10墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜