【问题标题】:How to export an Oracle Table Chunk-wise to CSV?如何将 Oracle 表块导出为 CSV?
【发布时间】:2022-01-05 01:55:42
【问题描述】:

我有一个包含超过 1000 万条记录的大型 Oracle 表。由于下载限制,我需要将oracle表通过set by sets导出为CSV。有没有办法分块下载表格? 注意:我使用的是 Oracle 11g 和 Oracle SQL Developer

【问题讨论】:

  • 这里没有足够的信息来提供帮助:您使用的是什么 Oracle 客户端? csv 导出是用什么语言实现的?为什么需要创建chunk,不能只逐行导出?
  • 如果您在 SQL Developer 中使用内置导出到 csv,您应该相应地更改任务和询问。我很确定 SQL Developer 在导出时没有内置分块。 SQL Developer 会抛出错误吗?我能想到的唯一方法是手动导出受“某些”键限制的成批行。
  • 让sqldev生成csv文件。准备好后,使用 OS shell 脚本将文件拆分为尽可能多的部分。
  • this(datapump exporting by pieces) 是否回答您的问题..?
  • 您好,行导出到 CSV 的行数限制是多少?您要导出所有 1000 万行但以块的形式吗?如果限制是 100 万,那么您可以编写 10 个 SQL 并导出到 csv。 set linesize 2 set numwidth 5 spool File1.csv SELECT * FROM ( SELECT * FROM table order by primary_key ; ) WHERE rownum > 1 and rownum 999999 和

标签: oracle oracle-sqldeveloper export-to-csv


【解决方案1】:

我找到了@hkandapal 给出的我正在寻找的解决方案

如果限制是 100 万,那么您可以编写 10 个 SQL 并导出到 csv。

set linesize 2
set numwidth 5enter code here 
spool File1.csv 
SELECT * FROM ( SELECT t.*, rownum rnum FROM table t order by primary_key ) WHERE rnum>= 1 
 and rnum < 1000000 -- For the 2nd query start with rnum > 999999 and < then 200000 
spool off

【讨论】:

  • 这不会生成CSV:它会默认输出一个固定宽度的列,由管道分隔,当某些列有换行符/管道时很难阅读
猜你喜欢
  • 2020-11-14
  • 1970-01-01
  • 2019-04-26
  • 2017-02-02
  • 2013-06-09
  • 2018-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多