1

我正在尝试使用 CSV 文件将数据导入到使用 SSIS 的 SQL Server 表中。该包很简单,带有文件源任务和 SQL Server 目标。

CSV 文件有 2 个字段 Transaction_Date 和 Account_Created。这些字段中的日期格式为 1/2/2009 6:00:00 AM。我看到以下错误消息:“错误:数据插入期间发生异常,从提供程序返回的消息是:数据源中字符串类型的给定值无法转换为指定目标列的日期时间类型。”

我在下面尝试的步骤:我尝试使用各种其他目标转换。我尝试在平面文件连接管理器中使用数据类型。我尝试使用源任务和 SQL Server 目标之间的数据转换转换。

当我尝试通过仅提供与 Transaction_Date 的连接来加载数据时,它可以工作。但是,当我尝试通过仅提供与 Account_Created 的连接来加载时,它会失败。

我确定我错过了一些愚蠢的东西。请帮忙。

问候, KK

我厌倦了从使用向导开始构建包的不同方法。我使用了实际的 CSV 文件,其中包含许多其他列,例如价格、产品名称等。当我尝试执行包时,我看到如下不同的错误消息:“[Destination for AdventureWorks [58]] 错误:输入“OLE DB 目标输入”(71 )。返回的列状态是:“由于可能丢失数据,无法转换该值。”。“当我尝试一个只有 2 个日期字段的 CSV 文件时,它工作得很好。

我现在真的很困惑,认为这是某种数据类型问题,我没有正确理解。有人可以解释一下这个问题吗?

问候, KK

4

1 回答 1

2

要加载前两个字段(Transaction_Date、Account_Created),您需要一个包含以下内容的 DataFlow 任务:

  • 平面文件源
  • 派生列(创建两列以用下面的公式替换“Transaction_Date”和“Account_Created”)
  • SQL Server 目标

笔记:

  • SSIS 不解析像 '1/2/2009 6:00:00 AM' 这样的日期格式,确保平面文件连接管理器将字段视为字符串(长度 > 22)
  • 在派生列中,您可以使用以下公式解析“01/02/2009”:

    (DT_DBDATE)(SUBSTRING([Column 2],7,4) + "-" + SUBSTRING([Column 2],4,2) + "-" + SUBSTRING([Column 2],1,2))

  • 由于缺少 SSIS 的高级日期时间解析功能,您在文件“2009 年 1 月 2 日”中的当前日期格式使得转换非常棘手。根据日期和月份,您必须从可变长度字符串中减去,因此您必须将 SUBSTRING 与 FINDSTRING 组合以确定分隔符“/”的位置

祝你好运

于 2013-02-12T13:23:44.687 回答