将所有内容从一个模式复制到Oracle中的另一个模式,但仅复制前n行

时间:2018-07-30 09:48:40

标签: oracle plsql

我想在另一个模式中重新创建多个非常大的模式(GB / TB大小)的完整结构,但是在填充表时,我只希望前n行。

现在我正在使用以下语句复制表,但这仅在没有外键约束的情况下有效。

create table DEV_OWN.mytable as select * from TEST_OWN.mytable where rownum < 10

我想制作一个循环遍历所有表并复制前n行的脚本,如果它依赖于外键以及索引,视图,程序包,存储过程以及其他所有内容,则可以复制或多或少所产生的模式是原始模式的副本,但是只有有限数量或记录。

由于我不得不经常运行此脚本,所以我希望它尽可能地最佳。

2 个答案:

答案 0 :(得分:1)

按照@Aleksej的建议,您可以导出架构,然后再次导入 或者,您可以使用立即执行来执行此操作。

您可以访问系统视图,例如 variableALL_TABLESall_indexes。 这将允许您构建可以使用all_triggers命令执行的动态sql指令,但是这种方式对于导出和导入孔模式更加复杂。

这是创建和填充表格的简单示例

execute immediate

在此示例中,仅创建没有约束,触发器或任何其他属于它的表。

如果您需要全部,那么转储模式实际上更容易。

答案 1 :(得分:0)

我认为,针对您的情况的最佳解决方案是使用where子句创建一个expdp,然后创建一个impdp。