2017-02-24 67 views
1

我有一個帶Excel源的SSIS包讀取Excel表。我目前正在使用表或查看數據訪問模式,它實際上是讀取工作表中的每一行,最大值爲1,048,576Excel來源SSIS

源工作表上有一個名爲PSA_DATA的Excel表格。爲什麼表中的表或查看下表中沒有這個表?工作表中有一個選項,後跟_FilterDatabase,但是當我按預覽時,即使運行包時拉動了正確的數據,但仍然失敗。這會比使用SQL命令和SELECT * FROM [fact_PSA$Ax:Bx]更有意義嗎?我們在Excel中使用命名範圍和表格的原因是因爲它們是動態的!現在,我必須每次都使用行數來硬編碼範圍?

我在這裏錯過了什麼?有沒有更簡單的方法我錯過了?我只想將Excel表格移動到SQL表格中!爲什麼世界上最無處不在的軟件不容易與世界上第二個無處不在的軟件交談?!?!

回答

0

如果工作表名稱未顯示在表格中或查看組合框中,那麼使用Sql命令並不是一個壞主意。

但是當使用SQL COMAND讀從Excel沒有必要指定一個範圍,OLEDB將使用範圍在默認情況下只需要使用下面的命令

SELECT * FROM [fact_PSA$] 

解決方法

可以嘗試從腳本任務或腳本組件讀取您的excel文件,您可以按照以下鏈接之一來實現此目的:

側面說明:有很多鏈接,您可以按照從Excel導入數據使用到SQL SSIS:

1

我很欣賞的鏈接變通,但我並沒有真正得到的回答我的問題。爲什麼我們不能從SSIS Excel Source引用EXCEL TABLE(不是工作表)?

我最終使用的SQL命令的數據訪問模式與此查詢:

SELECT * FROM [fact_PSA$A:W] 
WHERE fact_PSA_ID IS NOT NULL 

不知何故,使用SQL從即使提供的範圍設定爲「A工作表讀數每一個可能的行停止了它: W「是每一行。我想"WHERE fact_PSA_ID"限制行讀取SSIS源之前讀取的行。