【问题标题】:Flatfile Datatype Issue with SSIS to SQL ServerSSIS 到 SQL Server 的平面文件数据类型问题
【发布时间】:2014-12-18 10:29:18
【问题描述】:

通过 SSIS 将平面文件加载到 SQL Server。我在 SQL Server 目标表中几乎没有 DATE 数据类型的列。在 SSIS 的连接管理器中定义的相应数据类型应该是什么?我尝试了连接管理器中所有可用的DATE 数据类型,但它导致转换错误如下:

[OLE DB 目标 [199]] 错误:SSIS 错误代码 DTS_E_OLEDBERROR。 发生 OLE DB 错误。错误代码:0x80004005。 OLE DB 记录 可用。来源:“Microsoft SQL Server Native Client 11.0” Hresult:0x80004005 描述:“强制转换的字符值无效 规范”。

[OLE DB 目标 [199]] 错误:OLE DB 出现错误 Destination.Inputs[OLE DB 目标输入].Columns[创建于] on OLE DB Destination.Inputs[OLE DB 目标输入]。列状态 返回的是:“由于潜在的原因,无法转换该值 数据丢失。”。

[OLE DB 目标 [199]] 错误:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREON错误。 “OLE 数据库 Destination.Inputs[OLE DB 目标输入]”失败,因为错误 发生代码 0xC0209077,并且“OLE DB”上的错误行处置 Destination.Inputs[OLE DB Destination Input]" 指定失败 错误。在指定的指定对象上发生错误 零件。在此之前可能会发布更多错误消息 有关失败的信息。

平面文件源日期格式为DD-MM-YYYY 格式。

【问题讨论】:

  • 选择任何日期探测数据类型。在平面文件源中,转到高级属性。对于这些日期列中的每一个,将 FastParse 选项更改为 true。它应该允许您加载数据。如果它不查找未填充数据或使用错误日期的实例。用这些值更新您的问题和/或可能 ping 我
  • FastParse 参考示例
  • @billinkc 我相应地更改了设置。数据流已验证,但 SQL 目标表中的日期列对于所有行都为空。数据流忽略转换失败的列并加载空值。我在平面文件源中使用了日期 [DT_DATE],目标表中的列是 [Date]

标签: sql-server date ssis flat-file


【解决方案1】:

复制自:http://www.sqlservercentral.com/Forums/Topic609337-148-1.aspx

由于您有DD-MM-YYYY 格式,我认为您需要将其翻转为YYYY-MM-DD,以便 (DT_DATE) 转换正常工作。我已经相应地更改了子字符串参数。

创建派生列转换,创建一个新列,并将其放入表达式字段中。显然,请使用您自己的字段名称。

(DT_DATE)(SUBSTRING([field],7,4) + "-" + SUBSTRING([field],4,2) + "-" + SUBSTRING([field],1,2))

我个人将派生列命名为CONV_[field],这样我就知道它是一个转换的字段以及我转换的字段。使用您喜欢的任何命名约定。

在目标映射中使用派生列。

更长的答案。

确保您的源以 [DT_STR] 数据类型输入。

希望这会有所帮助。

【讨论】:

  • 完美,这对我有用。我浏览了很多博客并尝试了很多方法来解决这个问题。感谢您的帮助:)。
猜你喜欢
  • 2023-03-18
  • 2017-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多