有没有一款Oracle SQL工具可以从结果集构建插入语句?

3

是否有一个Oracle SQL工具可以从结果集构建插入语句?我们目前只能使用一个名为SQL Station的工具。我想要建议一个工具,比如Rapid SQL或CrazySQuirrell,或者构建自己可重用的sql代码块。


在我目前的职位中,我们使用Oracle SQL Developer。正如edwards所指出并由dpbradley建议的那样,它确实具有从结果集创建插入语句的能力。 - Glenn Wark
右键点击表格,选择导出(EXPORT),选择保存为工作表(WORKSHEET),点击下一步(NEXT),添加WHERE子句,点击GO,点击OK,点击下一步(NEXT),点击完成(FINISH)。您可以摆脱创建DDL语句并复制插入语句。虽然不像其他工具那么漂亮,但它确实有效。 - Glenn Wark
这里提供另一个有用的链接,针对类似问题。 - AabinGunz
9个回答

4
这个结果集是从哪里来的?如果你想执行SELECT语句,然后将结果数据插入到另一个表中,你可以在单个SQL语句中完成:
INSERT INTO table2 (columnA, columnB)
  SELECT columnA, columnB
    FROM table1;

谢谢,但我正在从一个数据库获取数据并将其移动到另一个数据库。 - Glenn Wark
你可以创建一个数据库链接并对远程表进行查询。 - Dave Costa
谢谢,戴夫。你有任何关于如何做这个的建议吗?SQL Station很老旧且糟糕。但是这是我们被允许使用的唯一选择。 - Glenn Wark
好的,也许你需要询问你的数据库管理员来完成这个任务,但你可以试一下。我不了解SQL Station,但我认为它允许你执行任何SQL语句。如果两个数据库都是Oracle:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_5005.htm#i2061505 - Dave Costa
如果另一个数据库不是Oracle,请从这里开始:http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/ds_concepts.htm#sthref3857 - Dave Costa

3

PL/SQL Developer也可以做到这一点。我既使用过PL/SQL Developer,也使用过Oracle的SQL Developer,在我看来,PL/SQL Developer具有更流畅和更一致的界面。不确定SQL Developer是否具备此功能,但PL/SQL Dev.还允许您将结果集导出为CSV、XML和HTML。

如果您正在运行Linux,它在WINE下的表现也不错。


3
如果您需要命令行工具,免费的cx_OracleTools可以提供此功能,还有其他一些不错的功能。 http://cx-oracletools.sourceforge.net/ - CompileSource - 执行文件中的语句,检查错误 - CopyData - 将数据从一个表或视图复制到另一个表或视图 - DbDebugger - 允许简单调试PL/SQL - DescribeObject - 以SQL语句形式描述对象以便重新创建 - DescribeSchema - 以SQL语句形式描述多个对象以便重新创建 - DumpCSV - 将选择语句的结果作为逗号分隔值转储 - DumpData - 将选择语句的结果作为插入语句转储 - ExportColumn - 将列中的数据导出到文件 - ExportData - 将数据库中的数据导出为可移植的转储文件 - ExportObjects - 将对象以SQL语句形式描述并导出到文件中 - ExportXML - 将表中的数据导出为简单的XML文件 - GeneratePatch - 生成SQL脚本以将一组对象转换为另一组对象 - GenerateView - 为表生成视图语句 - ImportColumn - 将文件中的内容导入到数据库中的列中 - ImportData - 导入使用ExportData转储的数据 - ImportXML - 从XML文件中导入数据(例如由ExportXML创建的文件) - RebuildTable - 生成SQL脚本以重建表 - RecompileSource - 重新编译数据库中所有无效的对象

1

是的,看看Oracle SQL Developer。它是免费的,可以从otn.oracle.com下载。


很遗憾,我们不能使用这个。我被困在试图想出一种笨拙的解决方案中。等我有时间的时候... - Glenn Wark
没问题...在我看来它只是个有bug的垃圾而已。 {-o) - TheHolyTerrah
谢谢Edwards。现在我在一个使用更现代工具的地方工作,我一直在使用它,而且它运行良好。有关如何使用它的详细信息,请参阅原帖中的我的评论。 - Glenn Wark

1

我找到了这个解决方案,现在正在使用它。感谢所有的帮助。 原来我们也可以使用SQL+。但出于某种原因,我无法在SQL Station中运行它。

COPY FROM userid/password@from_DB TO userid/password>@to_DB INSERT toDB_tablename USING SELECT * FROM fromDB_tablename where ....;

commit;


0

在紧急情况下,使用字符串拼接对于你想要构建的较小语句非常有效:

Select
    'Insert Into MyOtherTableTable Values(''' || MyMainTableColumn1 || ''' and ''' || MyMainTableColumn2 || ''')'
From MyMainTable

0

我知道现在可能有点晚了,但这对某些人可能会有所帮助。 如果您进入表格,可以“导出”数据。第二步是“指定数据”,您可以添加一些筛选器。 这仅适用于表格数据。

祝福


0

在查询结果集上右键单击,会弹出一个窗口。选择导出数据和插入。它会要求您选择生成插入语句的文件保存位置。给出文件名和保存路径。


0

使用Oracle SQL-Developer作为脚本输入和执行(F5):

select /*insert*/ 
  * from dual;

输出:

 Insert into "dual" (DUMMY) values ('X');

你也可以尝试使用 /*csv*/ 或者 /*html*/

来源: http://www.thatjeffsmith.com/archive/2012/05/formatting-query-results-to-csv-in-oracle-sql-developer/

SELECT /*csv*/ * FROM scott.emp;
SELECT /*xml*/ * FROM scott.emp;
SELECT /*html*/ * FROM scott.emp;
SELECT /*delimited*/ * FROM scott.emp;
SELECT /*insert*/ * FROM scott.emp;
SELECT /*loader*/ * FROM scott.emp;
SELECT /*fixed*/ * FROM scott.emp;
SELECT /*text*/ * FROM scott.emp;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接