【问题标题】:Problem to import datetimeoffset from csv file to a table via SSIS通过 SSIS 将 datetimeoffset 从 csv 文件导入表的问题
【发布时间】:2020-01-12 05:49:41
【问题描述】:

我有一个 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_INDUCEDTRANSFORMFAILUREON错误。 “平面文件 Source.Outputs[平面文件源输出].Columns[column1]" 失败 因为发生了错误代码 0xC0209084,并且错误行处置 关于“平面文件源.输出[平面文件源 Output].Columns[column1]" 指定错误时失败。错误 发生在指定组件的指定对象上。那里 可能是在此之前发布的错误消息,其中包含更多信息 失败。错误:数据流任务中的 0xC0202092,

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

你怎么解决它?或者为什么我会收到此错误?

【问题讨论】:

    标签: csv ssis etl datetimeoffset flatfilesource


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      在平面文件连接管理器中,将列数据类型保留为字符串(DT_WSTR 或 DT_STR),并在数据流任务中添加具有以下表达式的派生列转换:

      (DT_DBTIMESTAMPOFFSET, 7)REPLACE([DateColumn],"T"," ")
      

      例子:

      【讨论】:

        猜你喜欢
        • 2019-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-21
        • 2015-06-10
        相关资源
        最近更新 更多