如何从 PL/SQL 导出半百万条记录

Posted

技术标签:

【中文标题】如何从 PL/SQL 导出半百万条记录【英文标题】:How to export half a million records from PL/SQL 【发布时间】:2015-04-23 05:53:07 【问题描述】:

我有一张包含大约 500,000 条记录的表。我需要将所有记录导出到 excel 中。当我查询时,我无法像Out Of memory 所说的那样获得所有信息

表没有任何主键/索引。

有没有办法提取?

【问题讨论】:

你是如何提取的? 简单......select * from table 尝试将假脱机文件保存为 .csv 格式,然后从表中选择 *,完成后您可以使用 excel 将文本格式化为列,这应该会有所帮助 什么是内存不足?您如何准确地导出它? SQL开发者? PL/SQL 开发人员?蟾蜍? SQL*Plus? UTL_FILE?爪哇?桌子有多大? 500,000 行可能小于 5MB! @Ben pl/sql developer 【参考方案1】:

以 sqlplus 形式编写文件输出非常容易。 mycsv.sql:

SET DEFINE OFF
SET ECHO OFF
SET SERVEROUTPUT OFF
SET TERMOUT OFF
SET VERIFY OFF
SET FEEDBACK OFF
SET PAGESIZE 10000
SET ARRAYSIZE 5000
REM SET HEAD OFF
SET LINE 500
spool /tmp/mycsvfile.csv;
select * from MY_table;
spool off;
exit;

在 Linux 提示符下,您可以像

一样运行
$> sqlplus username/password @/tmp/mycsv.sql

【讨论】:

..pl/sql也一样吗??

以上是关于如何从 PL/SQL 导出半百万条记录的主要内容,如果未能解决你的问题,请参考以下文章

如何优化使用游标的 PL/SQL 代码

如何传递从多个表创建的 PL/SQL 游标记录?

如何使用 pl/sql 脚本导出 oracle sql 开发人员表模式?

利用PL/SQL从Oracle数据库导出和导入数据

PL/sql导入sql文件中文乱码解决办法

通过 TTS 导出 PL/SQL 包