我只是想给你一个小背景关于如何从oracle10g中提取600万条记录的建议?
- 需要写一个PL-SQL,这将浸汁6万个人次的纪录加入不同的表,并创建一个文件。
- 需要更多的建议,特别是如何获取这些记录。由于单次获取这些百万条记录可能会占用大量资源。所以问题是如何获取这些记录?
任何pl-sql将不胜感激。
我只是想给你一个小背景关于如何从oracle10g中提取600万条记录的建议?
任何pl-sql将不胜感激。
您是否需要提取单个表格的内容或JOIN
结果?结果是否需要订购?如果是这样,你应该首先优化你的提取查询。
一旦你有一个最佳查询,你可以直接SELECT
(例如通过sqlplus
)或写入外部(平面文件)表或使用ODI。
600万行是不是所有的东西。只需编写查询并让优化器完成它的工作。如果你的统计数据是最新的,这也是自动的,它应该运行得很好。试图调整它可能会使其运行速度变慢,除非您比Oracle工程师团队更好地理解查询优化。
如果你所有的行都足够小,只使用PL/SQL是可以的。 UTL_FILE包将使用PUT_LINE命令将您限制为每行32767个字符。有一种解决方法,但它需要将数据复制到BLOB。
我建议安装Python和cx_Oracle或Perl和DBD :: Oracle。他们将愉快地翻转600万行,没有问题。默认设置是为了保持网络传输不变,设置好一大堆行。
如果你让我知道你想如何继续下去,我可以发布一些示例代码,但是搜索cx_Oracle或DBD的文档:: Oracle将提供关于如何获取记录的基础知识。
您也可以考虑使用Java存储过程并使用标准的java.io类来编写文件。不过,您需要授予相应的Java权限才能写入文件系统。 – 2010-11-26 04:21:38
我写了Java程序将所有记录写入文件。在我的选择上,我有20个线程,它像梦一样工作。
欢迎来到Stack Overflow!这也许应该是一个评论,而不是一个答案,因为它几乎只是说你设法让这个工作没有提供任何具体细节。有了更多的代表,[你将能够发表评论](http://stackoverflow.com/privileges/comment)。 – 2015-03-06 07:36:46
你是如何测试你的方法是如何表达资源意图的?你为什么考虑改变你的初始方法? – 2015-03-06 07:58:24