如何使用sql developer导出大量数据 - Oracle

时间:2015-05-07 03:48:44

标签: oracle

我想将一些数据从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

9 个答案:

答案 0 :(得分:11)

从SQL Developer论坛找到以下答案:

  
    

似乎"最大自动开放尺寸"被硬编码为500000(字节,我相信),无法覆盖它。通过     限制这一点,我们扼杀任何可能的Java投诉     尝试打开一个巨大的文件时OutOfMemory。

  
     

要在SQL Developer中查看该文件,尽管存在此限制,   只需使用File | Open菜单。对于那些巨大的文件,请使用   外部编辑。如果你不想自动打开文件   为了压制警告对话框,请使用   工具|首选项|数据库|导出/查看DDL选项并取消选中   "导出时打开Sql文件"框。

     

您确定导出文件不包含所有插入行吗?   除非您点击OutOfMemory或磁盘已满,否则这将是一个错误   条件。我刚刚在55000行表上尝试了你的场景   产生了一个大约20MB的export.sql。包括所有行。

     

此致   加里格雷厄姆   SQL Developer Team

作为总结,它表明SQL开发人员不是打开大量数据文件的最佳工具。

希望Gary的回答能在某种程度上引导你。

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

答案 1 :(得分:3)

insert格式导出数据库时遇到此错误,在第一个Export wizard屏幕上选择加载程序格式修复了问题。

这可能是因为insert格式创建了一个带有DDL和数据作为插入语句的SQL脚本。因此,所有数据库都被转储到一个脚本文件中。

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

然而,这可能不适用于具有大量数据的单个表,因为该表的数据文件将达到限制。

答案 2 :(得分:1)

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

首先,请查看data pump。不过,它有一点学习曲线。

expimp(也是Oracle)更容易处理,但它们更老,而且几乎没有数据泵那么强大。

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

答案 3 :(得分:1)

您可以尝试以下不同的选项。

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

答案 4 :(得分:1)

解决方案1:

enter image description here

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

解决方案2:

enter image description here

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

答案 5 :(得分:0)

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

spool "D:\Temp\Report.csv"
SELECT /*csv*/ select id,name,age from EMP;
spool off;

答案 6 :(得分:0)

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

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

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

答案 7 :(得分:0)

Oracle 数据库命令既可以在 Oracle 的 SqlCl 中运行,也可以在 SQL 开发者中运行,所以这很容易:

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

答案 8 :(得分:-1)

有一个技巧可以将大块数据(从SQL开发人员)复制到Excel工作表中。

要遵循的步骤:右键单击--->出口数据---->选择格式类型为'Text'--->选择类型为“剪贴板”---->打开excel表并尝试粘贴以下内容:)

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

这样可行。

由于