【问题标题】:Script Oracle tables (DDL) with data insert statements into single/multiple sql files将带有数据插入语句的 Oracle 表 (DDL) 脚本写入单个/多个 sql 文件
【发布时间】:2011-07-27 07:21:26
【问题描述】:

我需要将给定模式的表导出到 DDL 脚本和 Insert 语句中 - 并对其进行脚本化,以便保持依赖关系/约束的顺序。

我看到这篇文章建议如何使用数据归档数据库 - http://www.dba-oracle.com/t_archiving_data_in_file_structures.htm - 不确定这篇文章是否适用于 oracle 10g/11g。

我在“Sql Developer”、“Toad for Oracle”、“DreamCoder for Oracle”等中看到了“带有数据的导出表”功能,但我需要一次只做一张表,而且仍然需要手动找出正确的脚本执行顺序。

是否有任何工具/脚本可以利用 oracle 元数据并使用数据生成 DDL 脚本?

请注意,某些表具有 CLOB 数据类型列 - 因此工具/脚本需要能够处理这些列。

附:我需要类似于 SQL Server 2008 中的“生成脚本”功能的东西,其中可以指定“脚本数据”选项并取回按表约束顺序生成的带有 DDL 和数据的自给自足脚本。请看:http://www.kodyaz.com/articles/sql-server-script-data-with-generate-script-wizard.aspx

感谢您的帮助!

【问题讨论】:

    标签: oracle insert schema export ddl


    【解决方案1】:

    首先,认识到这不一定是可能的。视图可以使用包中的函数,该函数也从视图中进行选择。另一个问题是您可能需要将数据加载到表中,然后应用约束,即使这可能比反过来慢。

    简而言之,您需要在这里做一些工作。

    找出系统中的依赖关系。 ALL_DEPENDENCIES 是主要机制。

    然后使用 DBMS_METADATA.GET_DDL 提取 DDL 语句。对于小数据量,我会单独提取约束以在数据加载后应用。

    在当前版本中,您可以将external tables to unload data 从常规表创建到操作系统文件中(显然反过来)。但是,如果您有奇特的数据类型(BLOB、RAW、XMLTYPEs、用户定义类型......),那将更具挑战性。

    【讨论】:

    • 感谢您的详细回答。最好的。
    【解决方案2】:

    我建议你这里使用Oracle标准导出和导入(exp/imp),你有理由不考虑吗?另外请注意,您可以在导入时使用“indexfile”选项将 SQL 语句(不幸的是,这不包括插入)输出到文件,而不是实际执行它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多