Sql-Server

SSIS不斷強制將excel源字元串更改為浮動

  • February 24, 2018

Excel 中有一個列應該是文本,但 SSIS 在那裡看到數字文本並自動將其設為雙精度浮點數

$$ DT_R8 $$. 我可以在輸出分支的外部和輸出列中手動更改它,但錯誤輸出只是拒絕讓我更改相應的列。

Error at Extract Stations [Excel Source [1]]: The data type for "output "Excel Source Error Output" (10)" cannot be modified in the error "output column "Group No" (29)".
Error at Extract Stations [Excel Source [1]]: Failed to set property "DataType" on "output column "Group No" (29)".

我試過修改包xml。我試過了IMEX=1typeguessrow=0但都沒有解決我的問題。這有什麼解決辦法嗎?也有文章建議您修改系統資料庫,以便在猜測數據類型之前,excel 讀取的數據多於預設的 8 行。我不想走這條路,因為即使它可以工作,我也必須修改我計劃執行包的機器上的系統資料庫。

要導入到 SQL nvarchar 欄位中的 excel 欄位讀取例如

295.3
296.33

但它們被寫入 SQL 表

295.30000000000001
296.32999999999998

我放入數據查看器和欄位顯示

295.3
296.33

一直到執行,這是正確的,但我猜當它到達 OLE DB 目標源時,它會以某種方式將其轉換為

295.30000000000001
296.32999999999998

這是錯誤的。

例如,我還有 V321.1 和 V213.34 等值,它們絕對不是整數,需要儲存為 varchar。

第 1 步:添加IMEX=1; MAXROWSTOSCAN=0連接字元串(例如Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Source\filename.xlsx;Extended Properties="EXCEL 12.0 XML;HDR=YES;IMEX=1; MAXROWSTOSCAN=0")。

第 2 步:關閉解決方案。在文本編輯器中打開 SSIS 包,找到一直反轉回預定義數據類型的列。在 XML 文件中手動將其更新為所需的格式。

第 3 步:在 SQL Server 數據工具中打開包並執行,現在您應該可以從文件中載入數據了。

是否可以將文件作為 .csv 文件獲取,該文件可以像文本文件一樣導入並且不會出現此問題?我通常會退回所有 Excel 文件並要求另一種格式,因為 SSIS 和 Excel 在許多層面上不能很好地協同工作。

引用自:https://dba.stackexchange.com/questions/39252