【问题标题】:SSIS loading data errorSSIS 加载数据错误
【发布时间】:2016-05-23 03:37:06
【问题描述】:

我有一个包含以下数据的 CSV 文件:

EmployeeCode,EmployeeName,EmployeeSalary,Date
101,raju,1000,2/2/2003
102,krish,100,3/4/2005
103,rishbh,320,12/9/2007
104,rani,4690,12/8/2008
105,olesia,2000,17/4/2009
106,olga,2000,12/6/2010
107,mellisa,3330,12/4/2011

我有一个叫做雇员的表:

EmployeeCode nvarchar(50)
EmployeeName nvarchar(50)
EmployeeSalary money
Date datetime

当我尝试使用 SSIS 包将此 CSV 文件加载到我的表中时,它给了我一个错误

1) [ADO NET 目标 [2]] 错误:期间发生异常 数据插入,提供者返回的消息是:给定的 来自数据源的 String 类型的值无法转换为类型 指定目标列的日期。

2) [SSIS.Pipeline] 错误:SSIS 错误代码 DTS_E_PROCESSINPUTFAILED。 组件“ADO NET Destination”(2) 上的 ProcessInput 方法失败 处理输入“ADO NET Destination”时出现错误代码 0xC020844B Input" (9)。已识别的组件从 处理输入法。该错误是特定于组件的,但 错误是致命的,将导致数据流任务停止运行。 在此之前可能会发布带有更多信息的错误消息 关于失败。

但是,如果我从 CSV 中删除日期列并尝试插入一切正常。日期列有什么问题,为什么不取值?

【问题讨论】:

  • 无法将来自数据源的String类型的给定值转换为指定目标列的日期类型。您是否将日期列从DT_STR(或DT_WSTR) 到其中一种数据数据类型?如果是这样,请发布您的操作方式 - 使用派生列转换?

标签: sql-server ssis business-intelligence msbi


【解决方案1】:

使用 OLE DB Destination 而不是 ADO NET Destination

这个问题是由于平面文件的默认数据类型选择了“字符串[DT_STR]”,它等于数据库中的varchar,但是你已经让你的目标表数据类型nvarchar等于Unicode 字符串 [DT_WSTR] .

使用派生列将数据类型字符串 [DT_STR] 更改为 Unicode 字符串 [DT_WSTR]

转到显示高级编辑器(来源)>>输入和输出属性输出列>>数据类型属性>>将数据类型更改为Unicode字符串[DT_WSTR]用于EmployeeCode和EmployeeName。

【讨论】:

  • 目标数据类型更可能是日期
  • 这将如何改变他试图将字符串加载到日期中的事实?
  • 我已经用 OLE DB Destination 和 ADO NET Destination 进行了测试,它对我来说运行良好。
  • 你是说使用相同的文件和目标表,你会得到错误数据源中String类型的给定值无法转换为指定目标列的日期类型 使用 OLE DB 目标并且使用 ADO.Net 目标没有错误?
  • 我已经使用提供的数据创建了 csv 文件,并使用 Dipen Shah 提供的 DDL 在 sql server 中创建了表。并更改了 EmployeeCode 和 Employeename 的数据类型 Unicode 字符串 [DT_WSTR] 它工作正常
【解决方案2】:

首先你应该使用OLE DB destination而不是ADO.Net Destination如果你的表很大并且现在出现问题,在你的表中日期的数据类型是'datetime'所以你必须改变你的输入使用右键单击组件并转到高级编辑器,将数据保存到日期时间。 否则,您可以在源和目标之间进行数据转换,并将日期转换为"DB_Datetime"。希望您这样做时不会遇到任何问题。

【讨论】:

    【解决方案3】:

    我有同样的问题,我的回答听起来很傻。我为此苦苦挣扎了 2 天,最终意识到我的 CSV 文件中的日期格式有误。

    例如:

    105,olesia,2000,17/4/2009 -- 这是无效的,因为它最终需要 17 作为一个月和 无效

    当我意识到这一点时,我大吃一惊!希望这可以帮助其他人前进!

    【讨论】:

      猜你喜欢
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多