如何使用SQL Developer-Oracle导出大量数据

jtoj6r0c  于 2022-09-18  发布在  Java
关注(0)|答案(10)|浏览(921)

我想从UAT DB上传一些数据到DEV DB。当我尝试通过SQL Developer中的导出功能执行此操作时,出现错误File C:\Users\xxx\export.sql was not opened because it exceeds the maximum automatic open size

如何将UAT数据复制到DEV?

ORACLE Version 12C
SQL Developer Version 4.0.0.13
bnlyeluc

bnlyeluc1#

在一个SQL开发人员论坛上找到了以下答案:
似乎“最大自动打开大小”被硬编码为500000(我相信是字节)的值,无法覆盖它。通过限制这一点,我们可以将Java OutOfMemory在试图打开一个大文件时的任何潜在抱怨扼杀在萌芽状态。

要在不受此限制的情况下从SQL Developer中查看文件,只需使用文件|打开菜单。对于那些巨大的文件,请使用外部编辑器。如果您不想为了抑制警告对话框而自动打开文件,请使用工具|首选项|数据库|导出/查看DDL选项,并取消选中“导出时打开SQL文件”框。

您确定导出文件不包含所有插入行吗?除非遇到OutOfMemory或磁盘已满的情况,否则这将是一个错误。我刚刚在AT 55000行表上测试了您的场景,该表生成了大约20MB的export.sql。所有的行都包括在内。

问候您,Gary Graham SQL开发团队

作为总结,认为SQL Developer不是打开大数据量文件的最佳工具。

希望加里的回答能在一定程度上指导你。

如果您需要了解一些可以打开大文件的工具,请查看LINK

ngynwnxp

ngynwnxp2#

解决方案1:

将这些值设置为更高的值!

解决方案2:

将“保存到”更改为工作表!

cgyqldqp

cgyqldqp3#

我在以insert格式导出数据库时遇到此错误,在第一个Export wizard屏幕上选择加载器格式解决了该问题。

这可能是因为insert格式使用DDL和DATA作为INSERT语句创建了单个SQL脚本。因此,所有数据库都被转储到单个脚本文件中。

loader选项生成多个文件:控制文件、数据文件和SQL文件。每个表都有单独的文件。因此,导出将包含数百个文件,没有一个文件达到大小限制。

但是,这可能不适用于数据量非常大的单个表,因为该表的数据文件将达到限制。

t2a7ltrp

t2a7ltrp4#

您可以尝试不同的选项,如下所示。

在SQL Developer上,当右键单击表并单击导出时,将启动导出向导,您可以选择“另存为”-“单独的文件”,将数据导出到同一个SQL文件中。或者,您可以在同一向导中将格式类型更改为CSV,以便以CSV格式导出数据。

nfeuvbwi

nfeuvbwi5#

如果您想要将大量数据(或少量数据)从一个数据库传输到另一个数据库,您应该考虑专门为这类任务设计的工具。

首先也是最重要的,看看Data Pump。不过,它有一点学习的曲线。

expimp(也是由Oracle提供)更容易处理,但它们更旧,功能也不如Data Pump强大。

您可能还想查看SQL*Plus copy command

ijnw1ujt

ijnw1ujt6#

有一个技巧可以将大量数据(从SQL Developer)复制到Excel工作表中。

操作步骤:右击->导出数据->选择格式类型为‘文本’->选择类型为“剪贴板”->打开EXCEL表格,尝试粘贴,切记如下:)

然后粘贴数据备注:不要将数据粘贴到EXCEL的第一个单元格上。任意列中的Ctrl+v

这会奏效的。

谢谢

lkaoscv7

lkaoscv77#

您可以使用假脱机查询并将结果另存为CSV或xlsx文件以获得更大的结果。例如:

spool "D:TempReport.csv"
SELECT /*csv*/ select id,name,age from EMP;
spool off;
xvw2m8pv

xvw2m8pv8#

1-您可以在DEV DB上创建指向UAT DB的数据库链接(db链接),以在DEV DB中插入行。

2-或者,您可以在PL/SQL中构建一个过程,在UAT DB中将数据导出到CSV格式的文件,并在DEV DB中使用Oracle外部表从该文件中进行选择。
注意日期列,用TO_CHAR写下。

3-使用Datapump从UAT DB导出数据,然后导入到DEV DB;这有点棘手。

goucqfw6

goucqfw69#

Oracle数据库命令既可以在Oracle的SqlCL中运行,也可以在SQL Developer中运行,因此这很容易:

set feedback only -- for Oracle 12.2+, turn off terminal output
set sqlformat insert -- data in "insert into ..." format
-- set sqlformat csv -- data in csv format
spool /path/to/your/file.sql
select * from t; -- lines to export
spool off
set feedback off  -- restore terminal output
bqujaahr

bqujaahr10#

要做到这一点,最简单的方法是修改屏幕截图中的“另存为”,以便在导出时保存为多个文件,而不是单个文件-

相关问题