从 SSIS 中的 CSV 导入 yyyyMMdd 日期

2024-03-12

我有 12 列使用yyyymmdd格式。在里面数据流任务, 我有一个平面文件源, a 派生列任务 and an OLE DB 目标。我将以下表达式应用于派生列任务:

(DT_DBDATE)(SUBSTRING((DT_STR,10,1252)([Date_Column]),1,4) + "-"
+ SUBSTRING((DT_STR,10,1252)([Date_Column]),5,2) + "-"
+ SUBSTRING((DT_STR,10,1252)([Date_Column]),7,2))

它一直让我在对字段进行子串之前转换字段,但我将字段设置为DT_STR in the 连接管理器。目的地字段位于DATESQL Server 中的格式。 SSIS 始终显示“由于可能丢失数据而无法转换”错误。我检查了 CSV 中的原始数据,没有发现任何不合适的日期。一切都符合格式。

我也尝试过使用数据转换任务按照建议进行here https://stackoverflow.com/questions/15296769/how-to-convert-string-in-format-yyyymmdd-to-date-using-ssis-expression,但最终得到了同样类型的错误。有什么建议吗?我在这里看到的答案都指向使用派生列任务,但我提到的其他几个人也遇到了与我相同的问题。

编辑:这是数据示例。所有错误中特别提到的字段是 CRTFCTN_DT。数据集中有 470 个字段,但这确实显示了前两个日期字段。

解决方案: In the 连接管理器,我改变了yyyymmdd字段到 DT_STR(10) (8 个字符表示日期,2 个字符表示添加的破折号),并重建我的数据流任务。这解决了问题。如果您不重建任务,派生列任务不会接受新的数据类型。重新创建任务后,我也不再需要在应用子字符串之前将日期转换为字符串。


您在连接管理器中将列 [Date_Column] 设置为 DT_STR。你指定的长度是多少?默认情况下它是 50。在派生列中,您将其长度用作 10,这是错误消息“由于可能丢失数据而无法转换”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 SSIS 中的 CSV 导入 yyyyMMdd 日期 的相关文章

随机推荐