我想我只是不能恰当地描述搜索查询,但是我无法找到以下简单问题的答案:如何使用提取的DDL片段在不同的数据库或不同的模式中重新创建表、视图等?
例如,当我使用
SELECT dbms_metadata.get_dependent_ddl ('TABLE', TABLE-NAME, SCHEMA) FROM dual我在那里得到FOREIGN KEY的输出。如果我现在天真地按表名的字母顺序在不同的数据库上发出结果的CREATE TABLE语句,我就会得到“表或视图不存在”错误,因为约束引用了未创建的表。
使用DDL的正常程序是什么?在不使用外部工具的情况下,重新创建完整的方案结构(缺少完整的数据库转储)(很容易)吗?
发布于 2016-04-18 16:13:15
可以使用datapump导出内容选项仅导出架构的元数据:
CONTENT=ALL _ DATA_ONLY _ METADATA_ONLY
导入过程将创建对象和约束,同时考虑到依赖关系。
如果您希望看到DDL,并且可以选择手动运行它,您可以使用datapump导入SQLFILE选项将DDL放入文件中,而不是执行它:
指定基于其他参数将执行的所有SQL DDL写入其中的文件。
您可以通过和其他客户端执行类似的操作,但是这些都是“外部工具”,而datapump可能不属于该类别,即使您必须从命令行运行它。有一个datapump API,所以如果您愿意,甚至可以避免命令行,尽管在某些方面它比使用expdp和impdp实用程序要复杂得多。
https://stackoverflow.com/questions/36696280
复制相似问题