是否有从结果集中构建插入语句的 Oracle SQL 工具?

Posted

技术标签:

【中文标题】是否有从结果集中构建插入语句的 Oracle SQL 工具?【英文标题】:Is there an Oracle SQL tool that builds insert statements from a result set? 【发布时间】:2009-04-09 17:23:16 【问题描述】:

我们目前只允许使用名为 SQL Station 的工具。我想推荐一个工具,比如 Rapid SQL 或 CrazySQuirrell,或者构建我自己的可重复使用的 sql 块。

【问题讨论】:

在我目前的职位上,我们使用 Oracle SQL Developer。它确实能够根据 edwards 指出并由 dpbradley 建议的结果集创建插入语句。 右击表,选择EXPORT,选择Save As WORKSHEET,点击NEXT,添加WHERE子句,点击GO,点击OK,点击NEXT,点击FINISH。您可以摆脱 Create DDL 语句并复制出 Insert 语句。虽然不如其他工具漂亮,但它确实有效。 为类似的问题添加另一个helpful link 【参考方案1】:

这个结果集来自哪里?如果您的意思是要执行 SELECT,然后将结果数据插入到另一个表中,您可以在单个 SQL 语句中执行此操作:

INSERT INTO table2 (columnA, columnB)
  SELECT columnA, columnB
    FROM table1;

【讨论】:

谢谢,但我正在从一个数据库中获取数据并将其移动到另一个数据库。 您可以创建一个数据库链接并对远程表进行查询。 谢谢戴夫。你对如何做到这一点有什么建议吗? SQL Station 又旧又蹩脚。然而,这是我们被允许使用的全部。 好吧,您可能需要请您的 DBA 来做,但您可以尝试一下。我不知道 SQL Station,但我认为它允许您执行任何 SQL。如果两个数据库都是 Oracle:download.oracle.com/docs/cd/B19306_01/server.102/b14200/… 如果其他数据库不是Oracle,从这里开始:download.oracle.com/docs/cd/B19306_01/server.102/b14231/…【参考方案2】:

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 - 将 select 语句的结果转储为逗号分隔值 DumpData - 将 select 语句的结果转储为插入语句 ExportColumn - 将列中的数据转储到文件中 ExportData - 将数据库中的数据转储到可移植的转储文件中 ExportObjects - 将对象描述为 SQL 语句以便在文件中重新创建 ExportXML - 将表中的数据导出到简单的 XML 文件中 GeneratePatch - 生成 SQL 脚本以从一组对象转到另一组对象 GenerateView - 为表生成视图语句 ImportColumn - 将文件内容导入数据库中的列 ImportData - 导入用 ExportData 转储的数据 ImportXML - 从 XML 文件(例如由 ExportXML 创建的文件)导入数据 RebuildTable - 生成用于重建表的 SQL 脚本 RecompileSource - 重新编译数据库中的所有无效对象

【讨论】:

【参考方案4】:

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

【讨论】:

很遗憾,我们不允许使用它。我一直在努力想出一个长期的解决方案。当我有时间... 没关系……无论如何,恕我直言。 -o) 谢谢爱德华。现在我正在使用更现代的工具在某个地方工作,我一直在使用它并且它运行良好。有关如何使用它的详细信息,请参阅原始帖子中的我的 cmets。【参考方案5】:

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

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

提交;

【讨论】:

【参考方案6】:

在紧要关头,使用字符串连接非常适合您要构建的较小语句:

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

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

我知道为时已晚,但它可能对某人有所帮助。 如果你去表,你可以“导出”数据。第二步是“指定数据”,您可以在其中添加一些过滤器。 这仅适用于表格数据。

干杯

【讨论】:

【参考方案9】:

使用 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;

【讨论】:

以上是关于是否有从结果集中构建插入语句的 Oracle SQL 工具?的主要内容,如果未能解决你的问题,请参考以下文章

oracle sql语句中,有没有能够将结果集中数字替换成汉字的函数?

从查询结果中选择随机结果样本

如何从 select 语句的结果集中插入嵌套表?

怎样把一条SQL语句查询出的结果集中的空值替换成0

Oracle数据的批量插入

从 Oracle 中的动态 SQL 获取结果集中的结果