KETTLE整架构、整库迁移(如何⼀次抽取200张表)
KETTLE整架构、整库迁移作业流程
⽂章⽬录
⼀、获取某个数据库,架构所有表名
⼆、数据迁移
三、案例
本⽂使⽤场景:需要⼀次性抽取某个架构中的数据,如果迁移数据库可以不⽤看本篇⽂章。下⾯作业的前提是我们的⽬标库已经建好了表结构,本⽂中⽬标表和源表的表名是⼀样的。
说说我⼯作中使⽤的场景:
该数据为⼀次性数据,数据源为sqlserver的bak⽂件包、共210张表,⽬标库为oracle数据库。
解决⽅法:将数据还原在sqlserver数据库(本地或者服务器),然后通过KETTLE整架构迁移到⽬标库中
⼀、获取某个数据库,架构所有表名
查询还原数据库中所有的表名
可以打开获取表名这个转换,最主要的步骤就是查询数据库中所有的表名。
#查询该数据库中所有的表名
SELECT NAME FROM SysObjects Where XType='U'
⼆、数据迁移
1、获取变量:获取步骤⼀结果并设置为变量
2、数据的抽取(数据表的导⼊)
3、将成功的表名传输到⼀个⽂件夹中保存
作业流程
这⾥⾯⽐较难理解,主要有三点。 第三点⼀定要理解,第三点也是最重要的。
1、获取变量:获取步骤⼀结果并设置为变量
2、数据的抽取(数据表的导⼊):接受变量中的表名,在进⾏抽取
3、将成功的表名传输到⼀个⽂件夹中保存,记住⽂件夹位置。
原因:我们⼀次性抽取⼏百张表肯定会报错,在报错之前我们肯定抽取过⼀些表到⽬标库中(假设我们已经抽取了ABCD4张表)
如果我们解决了报错表的问题,这时在运⾏作业,就会把之前抽取的ABCD4张表在抽取⼀遍。会导致⽬标库中的数据量⽐数据源多了1倍。
所以报错解决后,已经抽取过的表不需要在抽取。
如果解决勒?我们在设置变量中排除这些表就OK,也就是在第⼀步获取表名的时候不获取这些表。所以在整个作业中我们除了修改源库⽬标库的链接外,还需要修改第⼀步获取某个数据库,架构所有表名
三、案例
第⼀次执⾏报错,发现⽂件夹中有4个表名ABCD四张表名,报错解决后。修改作业中获取表名步骤(整个作业只修改这⼀个步骤),修改后点执⾏作业。
SELECT NAME FROM SysObjects Where XType='U'
AND NAME NOT IN(
'表名A',
'表名B',
'表名C',
'表名D')
第⼆次执⾏作业时⼜报错,发现⽂件夹中有7个表名FGHIJKL7张表名,报错解决后。修改作业中获取表名步骤(整个作业依然修改这⼀个步骤),修改后点执⾏作业。
SELECT NAME FROM SysObjects Where XType='U'
oracle数据库表结构怎么看AND NAME NOT IN(
'表名A',
'表名B',
'表名C',
'表名D',
'表名F',
'表名G',
'表名H',
'表名I',
'表名G',
'表名K',
'表名L')
第三次执⾏作业时⼜报错,解决⽅法参考第⼆次的解决⽅法。
如果不会可以给我留⾔,当然所有作业的前提是我们的⽬标库已经建好了表结构,本⽂中⽬标表和源表的表名是⼀样的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论