我想将一些数据从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
答案 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。不过,它有一点学习曲线。
exp
和imp
(也是Oracle)更容易处理,但它们更老,而且几乎没有数据泵那么强大。
您可能还想查看SQL*Plus copy command。
答案 3 :(得分:1)
您可以尝试以下不同的选项。
在SQL开发人员上,当右键单击Table并单击导出时,将启动导出向导,您可以选择“另存为” - 将导出同一SQL文件中的数据的“单独文件”。 或者您可以将同一向导上的格式类型更改为CSV,以CSV格式导出数据。
答案 4 :(得分:1)
答案 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 **
这样可行。
由于