Bash 跨不同的数据库和子网复制DB2模式
我想要一种更好的方法,从一个生产数据库模式复制所有表及其数据,并使用bash卸载和加载,将其放入不同子网中不同数据库上的dev数据库模式中。 dev数据库上的模式名称是不同的,并且可以不同,这一点很重要。 两个模式的表结构相同,只有数据库名称、模式名称和数据发生了更改 解决方案需要最少的手动操作,这一点很重要。可以手动复制文件,但不能通过编辑文件内容来更改数据,除非可以编写脚本自动执行此操作 目前,我们为每个表分别运行一系列非常长的脚本化导出到ixf LOB,然后是一系列非常长的精心放置的脚本化加载,小心地按顺序加载数据,先加载父级,再加载子级 卸载示例:Bash 跨不同的数据库和子网复制DB2模式,bash,shell,db2,Bash,Shell,Db2,我想要一种更好的方法,从一个生产数据库模式复制所有表及其数据,并使用bash卸载和加载,将其放入不同子网中不同数据库上的dev数据库模式中。 dev数据库上的模式名称是不同的,并且可以不同,这一点很重要。 两个模式的表结构相同,只有数据库名称、模式名称和数据发生了更改 解决方案需要最少的手动操作,这一点很重要。可以手动复制文件,但不能通过编辑文件内容来更改数据,除非可以编写脚本自动执行此操作 目前,我们为每个表分别运行一系列非常长的脚本化导出到ixf LOB,然后是一系列非常长的精心放置的脚本化
export to CLIENT.ixf of ixf lobs to $LOCATION lobfile CLIENT_lobs modified by lobsinfile select * from CLIENT;
load from CLIENT.ixf of ixf lobs from $LOCATION modified by lobsinfile replace into CLIENT statistics no copy no indexing mode autoselect allow no access check pending cascade deferred;
加载示例:
export to CLIENT.ixf of ixf lobs to $LOCATION lobfile CLIENT_lobs modified by lobsinfile select * from CLIENT;
load from CLIENT.ixf of ixf lobs from $LOCATION modified by lobsinfile replace into CLIENT statistics no copy no indexing mode autoselect allow no access check pending cascade deferred;
我已经研究了db2move,但找不到如何在加载期间指定数据库和模式名称,因为它似乎只在卸载/导出中受支持
db2look看起来很有希望,但它是否也会导出数据,还是只导出表名?您对“总体更好的方式”的定义是什么?您当前的解决方案有哪些缺陷?将生产数据复制到非产品环境的真正动机是什么?将生产数据复制到开发环境主要用于帮助识别和修复用户错误。总的来说,更好的方法是更简单或更干净的解决方案。也许有一个db2工具已经做到了这一点?理想情况下,我不希望每次添加新表时都必须更改脚本。