使用SSIS条件拆分组件比较日期时遇主键冲突问题
解决方案
验证日期解析正确性
尽管已配置CSV的INVOICE_DATE列为时间戳类型,SSIS平面文件源仍可能因格式识别错误导致日期解析偏差。在数据流中添加数据查看器,检查解析后的INVOICE_DATE值:比如确认04/03/2025被解析为2025年3月4日,而非2025年4月3日。若解析错误,需在平面文件连接管理器的「高级」标签中,为INVOICE_DATE列指定格式为dd/MM/yyyy HH:mm:ss。确认变量赋值时机与作用域
确保User::ultimaFecha变量在数据流任务执行前完成赋值:- 控制流中先执行「执行SQL任务」获取最新日期,再启动数据流任务
- 检查「执行SQL任务」的结果集配置:设置为「单行」,并将查询结果正确映射到
User::ultimaFecha变量
修正条件拆分规则
确认规则语法与逻辑正确性:- 若需求是插入早于最新日期的记录,规则应为
INVOICE_DATE < @[User::ultimaFecha],注意变量引用格式是否正确(比如变量名大小写是否匹配) - 若需包含等于最新日期的记录,调整为
INVOICE_DATE <= @[User::ultimaFecha]
- 若需求是插入早于最新日期的记录,规则应为
主键冲突处理与优化
- 临时规避:在插入前添加「查找转换」,检查
VOUCHER_NO是否已存在于FuelConsumption表,仅插入不存在的记录 - 长期优化:
- 若
VOUCHER_NO存在重复可能,将主键改为复合主键(如VOUCHER_NO + INVOICE_DATE) - 或新增自增ID作为主键,将
VOUCHER_NO设为唯一约束
- 若
- 临时规避:在插入前添加「查找转换」,检查
内容的提问来源于stack exchange,提问作者Diego DuCast
相关产品推荐
相关产品推荐

