You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地及服务器运行SSIS包时Excel时间列转换失败求助

解决SSIS Excel源到OLE DB目标的Time列转换错误

问题背景

Excel Source的Time列触发转换错误,提示“因可能存在数据丢失,无法转换该值”,关联错误码:0xC0209029、0xC0209072、0xC0047038。核心矛盾是源列数据类型为Date[DT_Date],目标列是UNICODE_String[DT_WSTR],直接转换时出现不兼容问题,本地和SQL Server代理作业执行均失败。

解决步骤

1. 引入显式数据转换组件

在Excel Source与OLE DB Destination之间添加Data Conversion组件:

  • 把源Time列(DT_Date)拖入转换组件,设置转换后的数据类型为DT_WSTR,指定长度(建议20,足够覆盖常规日期字符串)
  • 用转换生成的新列连接到目标OLE DB的Time列,替代原直接映射

2. 清理Excel源数据格式

  • 打开源.xlsx文件,检查Time列的实际内容:是否存在混合格式(比如部分是日期、部分是文本,或包含时间戳的完整日期值)
  • 统一设置列格式为日期,对无效值(空值、特殊字符)提前清理;若需保留字符串格式,先用Excel的TEXT函数将日期转为固定格式(如TEXT(A1,"yyyy-MM-dd"))后再保存

3. 临时重定向错误行排查

若不清楚具体错误数据,可调整错误处置策略定位问题:

  • 双击Excel Source,切换到错误输出选项卡
  • 将Time列的错误和截断处置改为重定向行
  • 添加Flat File Destination接收错误行,查看具体触发错误的数值,针对性修复

4. 对齐源目标数据类型(推荐长期方案)

如果业务逻辑允许,修改目标OLE DB的Time列数据类型为DATE或DATETIME,直接匹配源类型,彻底消除转换风险;若必须存储为字符串,改用Derived Column组件自定义转换格式(如(DT_WSTR,20)[Time]),确保格式一致性。

5. 匹配Excel驱动执行环境

  • 确认本地和SQL Server代理使用的Excel驱动位数(32/64位)一致:若代理是64位,需安装64位Excel驱动,或在作业配置中勾选使用32位运行时(适配32位驱动的包)

内容的提问来源于stack exchange,提问作者Kiki Upgrade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 04:01:02