脚本Oracle表(DDL)将数据插入语句编写为单个/多个sql文件

时间:2011-03-31 22:39:44

标签: oracle insert schema export ddl

我需要将给定模式的表导出到DDL脚本和插入语句中 - 并使其编写脚本,以保持依赖关系/约束的顺序。

我看到这篇文章建议如何使用数据归档数据库 - 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数据类型列 - 因此工具/脚本需要能够处理这些列。

P.S。我需要类似于SQL Server 2008中的“生成脚本”功能,其中可以指定“脚本数据”选项并使用DDL和数据返回自给自足的脚本,这些脚本按表约束的顺序生成。请参阅:http://www.kodyaz.com/articles/sql-server-script-data-with-generate-script-wizard.aspx

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

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

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

计算系统中的依赖项。 ALL_DEPENDENCIES是主要机制。

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

在当前版本中,您可以从常规表创建external tables to unload data到OS文件中(显然是反过来)。但是如果你有异国情调的数据类型(BLOB,RAW,XMLTYPE,用户定义的类型......),那将更具挑战性。

答案 1 :(得分:2)

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