我想在另一个模式中重新创建多个非常大的模式(GB / TB大小)的完整结构,但是在填充表时,我只希望前n行。
现在我正在使用以下语句复制表,但这仅在没有外键约束的情况下有效。
create table DEV_OWN.mytable as select * from TEST_OWN.mytable where rownum < 10
我想制作一个循环遍历所有表并复制前n行的脚本,如果它依赖于外键以及索引,视图,程序包,存储过程以及其他所有内容,则可以复制或多或少所产生的模式是原始模式的副本,但是只有有限数量或记录。
由于我不得不经常运行此脚本,所以我希望它尽可能地最佳。
答案 0 :(得分:1)
按照@Aleksej的建议,您可以导出架构,然后再次导入 或者,您可以使用立即执行来执行此操作。
您可以访问系统视图,例如
variable
,ALL_TABLES
,all_indexes
。
这将允许您构建可以使用all_triggers
命令执行的动态sql指令,但是这种方式对于导出和导入孔模式更加复杂。
这是创建和填充表格的简单示例
execute immediate
在此示例中,仅创建没有约束,触发器或任何其他属于它的表。
如果您需要全部,那么转储模式实际上更容易。
答案 1 :(得分:0)
我认为,针对您的情况的最佳解决方案是使用where子句创建一个expdp,然后创建一个impdp。