【问题标题】:Generating sql insert into for Oracle为 Oracle 生成 sql 插入
【发布时间】:2025-12-15 22:30:01
【问题描述】:

在使用 Oracle 时,我唯一没有自动化工具的是可以创建 INSERT INTO 脚本的程序。

我并不迫切需要它,所以我不会花钱买它。我只是想知道是否有任何东西可以用来在给定现有数据库的情况下生成 INSERT INTO 脚本而无需花费大量资金。

我已经通过 Oracle 进行了搜索,但没有找到这样的功能。

PL/SQL Developer 中存在,但 BLOB 字段出错。

【问题讨论】:

  • 不能使用 SQL*Loader 吗? (我知道,设置起来有点费力,但至少你可以为每个表创建一个“皮肤”,然后将内容转储到你的文件中)

标签: sql oracle


【解决方案1】:

Oracle 的免费 SQL Developer 将执行此操作:

http://www.oracle.com/technetwork/developer-tools/sql-developer/overview/index.html

您只需找到您的表格,右键单击它并选择导出数据->插入

这将为您提供一个包含插入语句的文件。您也可以将数据导出为 SQL Loader 格式。

【讨论】:

  • 同样你可以尝试在 Sql Developer 中运行(使用 F5)上述更性感的版本: SELECT /*insert*/ * FROM your_table;
  • @gerodim 将您的评论变成答案 - 这应该是被接受的!!!!谢谢!
  • 如果您将数据从环境(例如测试 oracle 服务器)移动到另一个环境(例如开发 oracle 服务器)的最佳解决方案
【解决方案2】:

您可以在 PL/SQL Developer v10 中做到这一点。
1. 单击要为其生成脚本的表。
2. 点击导出数据。
3. 检查是否选择了要为其导出数据的表。
4. 单击 SQL 插入选项卡。
5. 如果不需要整张表,请添加 where 子句。
6. 选择您将在其中找到 SQL 脚本的文件。
7.点击导出。

【讨论】:

    【解决方案3】:

    使用 SQL 函数(我是author):

    用法:

    select fn_gen_inserts('select * from tablename', 'p_new_owner_name', 'p_new_table_name')
    from dual;
    

    地点:

    p_sql            – dynamic query which will be used to export metadata rows
    p_new_owner_name – owner name which will be used for generated INSERT
    p_new_table_name – table name which will be used for generated INSERT
    

    此示例中的 p_sql 是 'select * from tablename'

    您可以在这里找到原始源代码:

    Ashish Kumar 的 script 生成单独可用的插入语句而不是 SQL 块,但支持的数据类型较少。

    【讨论】:

      【解决方案4】:

      您可能会在数据库中执行类似的操作:

      select "insert into targettable(field1, field2, ...) values(" || field1 || ", " || field2 || ... || ");"
      from targettable;
      

      更复杂的是here

      【讨论】:

      • 我是来找这个的,有时候这样生成sql比较容易。
      【解决方案5】:

      我一直在寻找解决方案,今天找到了。这是你可以做到的。

      1. 打开 Oracle SQL Developer 查询构建器

      2. 运行查询

      3. 右击结果集并导出

        http://i.stack.imgur.com/lJp9P.png

      【讨论】:

      • 虽然这有效,但它会强制执行两次查询。第一次在屏幕上显示结果,然后再次将其导出到文件中。这对小桌子来说还不错,但对大桌子来说就很糟糕了。
      【解决方案6】:

      如果您有一个空表,则导出方法将不起作用。作为一种解决方法。我使用了 Oracle SQL Developer 的表视图。并单击列。按 Nullable 排序,因此 NO 位于顶部。然后使用 shift + select 为范围选择这些不可为空的值。

      这使我可以进行一次基本插入。这样 Export 就可以准备正确的所有列插入。

      【讨论】:

        【解决方案7】:

        如果您必须定期将大量数据加载到表中,请查看 SQL Loader 或外部表。应该比单个插入要快得多。

        【讨论】:

          【解决方案8】:

          您也可以使用MyGeneration(免费工具)编写自己的sql生成脚本。 MyGeneration 中包含一个用于 SQL Server 的“插入”脚本,可以轻松更改为在 Oracle 下运行。

          【讨论】: