一、ETL关于无主键如何同步数据
1.触发器增量
(1)创建表并导入数据
本次创建了六张表,1表为无主键源表,2表为有主键源表,3和4为无主键目的表,5和6为有主键目的表。
(2)创建转换,开启同步
test1分别对test3和test5同步数据,test2分别对test4和test6同步数据。
开启同步后,数据全部同步到目的表中,说明有无主键,数据都会进行同步。
(3)insert/update/delete操作
我们对源表进行insert操作,看目的表是否会正常同步
查看四张目的表,新数据已经成功同步,说明我们插入数据,对有没有主键并没有什么影响。
我们对源表进行update操作,看目的表是否会正常同步
我们可以看到3表没有进行修改,4、5和6表进行了修改
源表无主键->目的表无主键,不更新
源表无主键->目的表有主键,更新
源表有主键>目的表无主键,更新
源表有主键>目的表有主键,更新
说明目的表有主键就会更新
我们对源表进行delete操作,看目的表是否会正常同步
我们可以看到3和4表没有进行修改,5和6表进行了修改,
源表无主键->目的表无主键,不删除
源表无主键->目的表有主键,删除
源表有主键>目的表无主键,不删除
源表有主键>目的表有主键,删除
说明只有目的表有主键才会删除
(4)查找列对数据同步影响
在转换里设置查找列(1列)
我们清空目的表,恢复源表,再次进行insert/update/delete操作看有什么影响
我们对源表进行insert操作,看目的表是否会正常同步
查看四张目的表,新数据已经成功同步,说明我们插入数据,对有没有主键并没有什么影响。
我们对源表进行update操作,看目的表是否会正常同步
我们可以看到3、4、5、6表都进行了修改,说明只有目的表有无主键才会对数据同步有影响,但我们设置查找列后,虽然目的表并没有设置主键,但查找列就会有主键的作用。
我们对源表进行delete操作,看目的表是否会正常同步
我们可以看到3、4、5、6表都进行了修改,说明只有目的表有无主键才会对数据同步有影响,但我们设置查找列后,虽然目的表并没有设置主键,但查找列就会有主键的作用。
总结:在触发器增量,目的表的主键非常重要,而在实际生产环境中每张表几乎都会有主键,而且有主键的表查询更快,同步效率越高,本次测试只是为学习所作的大致测试,实际情况还要以当时环境为准。
想了解更多达梦数据库相关信息,欢迎访问达梦技术社区:首页 | 达梦云设配中心(dameng.com)