我正在尝试使用SSIS将数据导入到SQL Server表中。 使用文件源任务和SQL Server目的地,包很简单。
CSV文件有两个字段Transaction_Date和Account_Created。这些字段中的日期是1/2/2009 6:00:00 AM的格式。我看到以下错误消息: “错误:数据插入期间发生异常,从提供程序返回的消息是:数据源中String类型的给定值无法转换为指定目标列的datetime类型。”
我在下面尝试的步骤: 我尝试使用各种其他目标转换。 我尝试在Flatfile连接管理器中使用数据类型。 我尝试使用源任务和SQL Server目标之间的数据转换转换。
当我尝试通过仅提供与Transaction_Date的连接来加载数据时,它可以工作。但是,当我尝试通过仅提供与Account_Created的连接来加载时,它会失败。
我确信我错过了一些愚蠢的话。请帮忙。
此致 KK
我厌倦了一种不同的方法来开始使用向导来构建包。我使用了实际的CSV文件,其中包含许多其他列,如Price,Product_name等。当我尝试执行包时,我看到一个不同的错误消息,如下所示: “[AdventureWorks的目标[58]]错误:输入”OLE DB目标输入“(71)上的输入列”价格“(91)出错。返回的列状态为:”无法转换该值,因为可能会丢失数据。“ “ 当我尝试只有2个日期字段的CSV文件时,效果非常好。
我现在真的很困惑,并认为这是某种数据类型问题,我没有弄清楚它。有人会对这个问题有所了解吗?
此致 KK
答案 0 :(得分:2)
要加载前两个字段(Transaction_Date,Account_Created),您需要一个包含以下内容的DataFlow任务:
注意:
在派生列中,您可以使用以下公式解析'01 / 02/2009':
(DT_DBDATE)(SUBSTRING([第2栏],7,4)+“ - ”+ SUBSTRING([第2栏],4,2)+“ - ”+ SUBSTRING([第2栏],1,2) )
由于缺少SSIS的高级日期时间解析功能,您在文件'1/2/2009'中的当前日期格式使转换变得非常棘手。根据日期和月份,您必须从可变长度字符串中减去,因此您必须将SUBSTRING与FINDSTRING组合以确定分隔符的位置'/'