首页 > 解决方案 > 通过 SSIS 将 datetimeoffset 从 csv 文件导入表的问题

问题描述

我有一个 csv 作为源文件,我正在尝试将此文件中的数据加载到暂存 SQL 服务器表中。有三个日期列。下面是这些列的值的示例:

2007-10-02T08:46:13+02:00

在 SQL 服务器端,我已定义datetimeoffset(7)为数据类型,并在 SSIS 连接管理器中选择database timestamp with timezone [DT_DBTIMESTAMPOFFSET]了数据类型。但是我在导入日期时间列时遇到以下错误:

数据转换失败。列“column1”的数据转换返回状态值 2 和状态文本“由于可能丢失数据,无法转换该值。”。

错误:数据流任务中的 0xC0209029,平面文件源 [2]:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。“Flat File Source.Outputs[Flat File Source Output].Columns[column1]”失败,因为发生错误代码 0xC0209084,并且“Flat File Source.Outputs[Flat File Source Output].Columns[column1]”上的错误行处置指定错误失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。错误:数据流任务中的 0xC0202092,

平面文件源 [2]:在数据行 2 上处理文件“\path to file.csv”时出错。错误:0xC0047038 在数据流任务,SSIS.Pipeline:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。平面文件源上的 PrimeOutput 方法返回错误代码 0xC0202092。当管道引擎调用 PrimeOutput() 时,组件返回了失败代码。失败代码的含义由组件定义,但错误是致命的并且管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

你如何解决它?或者为什么我会收到这个错误?

标签: csvssisetldatetimeoffsetflatfilesource

解决方案


首先尝试将其加载为字符串(长度为 25 左右),然后尝试使用 ssis 中的转换列对其进行子字符串化,然后您可以尝试将其转换为另一个转换列中的日期时间数据类型,然后再加载到您的表中。


推荐阅读