【发布时间】:2019-09-08 14:56:03
【问题描述】:
我有两个在 SSIS 中构建的包。这个包输出到一个文件路径,拉入两个 excel 文件,并将它们加载到 SQL Server db 中的两个表中。其中一个包运行良好并加载其各自的表。但是,另一个 excel/csv 文件包含两个日期列,并且包失败,因为它需要加载到的 SQL Server 表有两个 DateTime 列。我得到的错误是:
-OLE DB Destination.Inputs[OLE DB Destination Input].Columns[CustDate] on OLE DB Destination.Inputs[OLE DB Destination Input] 出现错误。
我尝试将 SQL 表中的 datetime 列强制转换为 Date,但它仍然不起作用并引发相同的错误。我在 SSIS 中添加了一个数据转换任务,尝试将两个日期字段转换为多种数据类型,但仍然出现错误。有人可以告诉我应该在 SSIS 包中转换这两个字段的数据类型吗?第一个包运行良好,因为它不包含 Excel 文件或它加载到的表中的任何日期字段。
到目前为止,我已经尝试将这两个日期字段转换为:string[DT_STR]、Unicode string[DT_WSTR]、date[DT_DATE],但它们都不起作用。任何人都可以提供任何建议吗?谢谢!
到目前为止,我已经尝试将这两个日期字段转换为:string[DT_STR]、Unicode string[DT_WSTR]、date[DT_DATE],但它们都不起作用。任何人都可以提供任何建议吗?谢谢!
【问题讨论】:
-
会有比SSIS更多的错误。您在这里遇到了哪些其他警告/错误?
-
你能提供一个你约会的样本吗?看来您可以将其成功加载到您的表中。这意味着这绝对是您的日期字段格式的问题,这导致它不可转换。如果您在该字段中有任何字母,请考虑删除这些字母,并应用 LTRIM(RTRIM(Date))
-
第二个包是读取 Excel (.xlsx) 文件还是 CSV 文件? CSV 文件没有数据类型 - 一切都存储为原始字符串值。 CSV 文件中的日期可能与 SQL Server 的
DATEFORMAT设置的格式不同。将日期序列化为 CSV 文件时,您应该以 ISO 8601 日期格式为目标,这种格式是明确的,并且无论 SQL Server 的DATEFORMAT设置如何都可以读取,例如:"Foo","2018-12-31","Bar"
标签: sql sql-server ssis