DS运行成功,未报错,但是插入表数据只有一半?
0
我现在要将文本数据导入到DB2数据库,源选择的是 seqeuential file Stage 目标选择的是 db2 connector stage ,设置目标的写模式是insert时,运行不报错,数据全部成功插入(数据691条),为了要保证每个月可以重新跑数,但是当月数据只存放一份。我选择的写模式是 delete then insert ,并手写删除和插入语句(先删除当月数据,再从文本获取当月数据插入),这样问题就出现了,编译运行都成功,但是查看数据库的数据只有345条,若是再次执行,数据就可能是346条,表中数据在345、346中徘徊。整了一天,还是找不到解决方案,烦请大神帮忙看看,是不是哪里缺少了什么设置?
PS:日志展示的是 1 delete 0 ; 1 insert 345 ; 0 delete 345 ;0 insert 346 这样 最后数据有346条 。反之 345条
PS:日志展示的是 1 delete 0 ; 1 insert 345 ; 0 delete 345 ;0 insert 346 这样 最后数据有346条 。反之 345条
没有找到相关结果
重要提示:提问者不能发表回复,可以通过评论与回答者沟通,沟通后可以通过编辑功能完善问题描述,以便后续其他人能够更容易理解问题.
3 个回复
simon_cao - 打酱油 2016-07-10 回答
赞同来自: BAO胖子
首先导致这个问题的原因是输出的db2 connector stage中选择了手写的删除语句。试想一下你的作业是并行执行的,那么就必然这个delete操作会在每个节点都执行一次,所以只有一半左右的数据写入到数据库中。
那么解决这个问题的方法也很简单,要么在输出的db2 connector中选择自动truncate table在插入数据,要不将输出 db2 connector中的运行模式改为sequential(串行模式)。
再给一点建议,像这样数据量小的表是可以全表删除再插入数据的,但是有时也可以考虑一下如果实现方式不复杂的情况下用增量的方式做数据更新,当然这个根据具体情况而定。
指尖旋律2014 2016-07-14 回答
赞同来自:
楚天歌 2016-07-15 回答
赞同来自:
db2 connector stage 的数据不是唯一的,有重复。而你选择delete then insert模式, 会把所有数据删除了,然后插入来源数据的唯一值,你看一下是这个导致的问题吗