首页 文章

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

提问于
浏览
0

我需要将给定模式的表导出到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数据类型列 - 因此工具/脚本需要能够处理这些列 .

附:我需要类似于SQL Server 2008中"Generate Scripts"功能的东西,其中可以指定"script data"选项并使用DDL和数据返回一个自给自足的脚本,按照表约束的顺序生成 . 请参阅:http://www.kodyaz.com/articles/sql-server-script-data-with-generate-script-wizard.aspx

谢谢你的帮助!

2 回答

  • 3

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

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

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

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

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

  • 2

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

相关问题