Informatica映射切换数据源后出现重复记录,求原因排查
Informatica切换文件数据源后目标端重复记录的常见原因
- 源文件本身存在隐性重复:别只看统计的750条记录数,实际文件里可能有肉眼难察觉的重复——比如行尾多余空格、字段值大小写不一致、隐藏的换行/制表符,导致看起来相同但系统判定为不同记录;或是文件生成环节(如上游导出、ETL生成)就意外引入了重复行。可以用Notepad++这类工具的重复行查找功能,直接校验源文件的实际重复情况。
- 文件读取配置出错:
- 若用
Fixed Width格式,字段宽度定义不准确,会导致行拆分错误,把一行拆成多行,或是多行错误合并后被重复读取。 - 若用
Delimited格式,分隔符设置错误(比如文件用|但映射里设成,),或是字段值内的分隔符未转义(如字段内容含逗号但未加引号),会引发解析混乱,生成重复或错误记录。 - 跳过行配置失误:如果源文件带表头,映射未设置跳过首行,表头会被当作数据行读取;或是文件末尾的空白行被误判为有效记录,额外增加行数。
- 若用
- 映射转换逻辑未适配文件源:
- 之前用关系数据源时,源表有主键约束,或是映射里通过
Lookup、Aggregator做过去重,切换文件源后这些隐式去重逻辑未保留,自然会出现重复。 Union、Joiner这类转换,在文件源场景下可能因数据格式问题触发重复:比如Joiner的连接字段在文件源中存在空值,引发笛卡尔积,生成大量重复记录。- 会话缓存/提交配置问题:比如会话设置了
Commit on N Rows,但文件读取的缓存机制导致部分记录被重复加载;或是会话中途重启后,断点处理不当,已提交的记录被重新写入目标。
- 之前用关系数据源时,源表有主键约束,或是映射里通过
- 目标端无防重机制:
- 目标表未设置主键或唯一约束,无法拦截重复记录插入。之前用关系数据源时源数据本身无重复,切换文件源带入重复后,目标端无校验直接存储。
- 会话
Target Load Type设置错误:比如误选Append而非Truncate/Insert,若目标表有残留旧数据,新数据追加后会和旧数据重复(你的情况可能性较低,但仍需排查)。
内容的提问来源于stack exchange,提问作者Ritwik Das
相关产品推荐
相关产品推荐

