2013-02-10 70 views
1

我想和玩一個CSV文件來使用SSIS將數據導入到SQL Server表中。 該軟件包使用文件源任務和SQL Server目標很簡單。SSIS - CSV到SQL服務器數據導入錯誤

CSV文件有兩個字段Transaction_Date和Account_Created。這些字段中的日期格式爲1/2/2009 6:00:00 AM。我看到下面的錯誤消息: 「錯誤:在數據插入過程中發生異常,從提供程序返回的消息是:數據源中String類型的給定值無法轉換爲指定目標列的類型datetime。 「

我嘗試了下面的步驟: 我嘗試過使用各種其他目標轉換。 我試過在Flatfile連接管理器裏面玩數據類型。 我嘗試使用源任務和SQL Server目標之間的數據轉換。

當我試圖通過僅提供連接到Transaction_Date來加載數據時,它就可以工作。但是,當我嘗試通過僅爲Account_Created提供連接來加載時,它失敗。

我相信我錯過了一些愚蠢的東西。請幫忙。

問候, KK

我累不同的方法來建立從使用嚮導開始包。我使用了包含Price,Product_name等許多其他列的實際CSV文件。當我試圖執行該程序包時,我看到一條不同的錯誤消息,如下所示: 「[AdventureWorks [58]的目的地]錯誤:輸入」OLE DB目標輸入「時輸入列」價格「(91)出錯返回的列狀態是:「由於數據可能丟失,無法轉換該值。」 「 當我嘗試一個只有2個日期字段的CSV文件時,它的工作效果非常好。

我真的很困惑,現在認爲這是某種數據類型的問題,我沒有得到它的正確。有人可以解釋一下這個問題嗎?

問候, KK

+1

你肯定需要使用數據轉換轉換。 1/2/2009是指1月2日或2月1日?作爲一個例子,SSIS表達式'(DT_DBDATE)「2009-01-02」'產生一個日期。您需要對數據文件執行一些字符串操作以將日期轉換爲該格式,然後使用(DT_DBDATE)將其轉換爲日期數據類型。 – 2013-02-11 06:29:32

回答

2

要加載前兩個字段(TRANSACTION_DATE,Account_Created),你需要一個數據流任務包含:

  • Flatfile文件來源
  • 派生列(創建兩列用下面的公式替換'Transaction_Date'和'Account_Created')
  • SQL Server目標

注:

  • 日期格式像「2009年1月2日上午6點○○分00秒」不被解析SSIS,確保Flatfile文件連接管理器對待字段字符串(長度> 22)
  • 在派生列,則可以解析'01/02/2009' 與此公式:

    (DT_DBDATE)(SUBSTRING([列2],7,4)+ 「 - 」 + SUBSTRING([列2 ],4,2)+「 - 」+ SUBSTRING([Column 2],1,2))

  • 您在當前日期格式文件'1/2/2009'由於缺乏SSIS的高級日期時間分析功能而使得轉換非常棘手。根據日期和月份你會從一個可變長度的字符串來減去,所以你將不得不SUBSTRING與FINDSTRING相結合,以確定分隔符「/」

好運的位置

相關問題