2016-09-05 83 views
-1

該任務是將多個文件(在同一文件夾中)加載到同一個sql server表中,所有表格都具有相同的格式,可以加載到相同的sql表中。如何在嵌套的foreach循環容器中設置配置

我正在使用Visual Studio數據工具2010.我知道如何在外部foreach循環容器中使用Foreach File Enumerator設置循環文件,以及如何在內部foreach循環容器中使用Foreach ADO.NET架構行集枚舉器設置循環表。我的問題是如何通過動態傳遞文件路徑來連接這兩個foreach循環容器。

我試圖配置excel ado訪問連接管理器 - >屬性--->表達式---> [名稱]到[fullfilepath]像@ [User :: fileFolder] + @ [User :: FileName ],但不起作用....

任何人都可以幫忙嗎?非常感謝!

Connection Manager config[![foreach loop conf[![DFT config] 2] 3

+0

任何錯誤消息或洞察力爲什麼你認爲'它不工作'將是有益的。 – Ferdipux

+0

我的錯誤顯示爲錯誤:在連接列表中找不到連接名稱「C:\ ssis \ Book1.xlsx」。 – Joan

回答

-1

感謝馬特的見解。我終於通過使用ADO.NET來完成表單的內部循環。我之前缺少的是缺少一個額外的DFT連接管理器。

0

從你的錯誤,並說明它出現的問題是,你正在設置[name]屬性的表達。您應該將[連接字符串]屬性設置爲[fullfilepath]而不是name屬性。

關於您的編輯和評論。 有趣的是,我還沒有嘗試過你想要做的,但是在我看來,你在哪裏使用錯誤的連接管理器/提供者類型,所以我做了一個快速的互聯網搜索,看看我能否確認並找到這篇MS文章https://msdn.microsoft.com/en-us/library/ms345182.aspx,看起來幾乎正是你想要的。

該文章顯示Jet.OLEDB.4.0提供程序的使用,而不是您嘗試使用的訪問提供程序。我不確定你是否可以使用ACE OLEDB並獲得相同的結果或不需要嘗試。但是無論哪種方式,連接字符串不僅僅是一個文件路徑,就像平面文件或者Excel連接管理器一樣,它需要是一個適當的連接字符串。

爲Jet 4.0將訪問驅動程序確實使用文章建議:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @[User::fullfilepath] + ";Extended Properties=\"" + @[User::ExtProperties] + "\"" 

的反斜槓在擴展性能是一個轉義序列包括雙引號。擴展屬性是必需的,並且與您要連接的Excel版本相關。

E.g. Excel 97中,以2003

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @[User::fullfilepath] + ";Extended Properties=Excel 8.0" 

的Excel 12.0 2007+

對於ACE駕駛員這將是幾乎相同的僅改變了供應部件。

E.g.

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::fullfilepath] + ";Extended Properties=Excel 8.0" 
+0

我不理解你的評論或它的問題。我建議使用Excel Connection的Expression配置的屏幕截圖更新您的問題,並且還會討論如何/何時設置您在此使用的變量的值。您的評論中關於您的錯誤的問題使您看起來像將錯誤的值分配給錯誤的屬性。 – Matt

+0

有四個變量:Fo​​lder-> C:\ ssis \ Book1.xlsx; filename->空白; fullfilepath - > [User :: folder] +「\\」+ [User :: filename]; sheetname-> blank我將[連接字符串]更改爲fullfilepath,但沒有給出循環文件,但只是第一個文件重複加載到SQL服務器,最後一個錯誤[連接管理器「C:\ ssis \ Book1.xlsx」]錯誤:連接字符串格式無效。它必須由X = Y形式的一個或多個組成部分組成,用分號分隔。在數據庫連接管理器上設置具有零組件的連接字符串時,會發生此錯誤。 – Joan

+0

嗨,Joan,如果不知道你的軟件包的配置方式,就很難理解這個問題。請使用控制和數據流更新您的文章,以及您何時/如何設置變量值和表達式值。那麼我們/社區可能會更好地協助您。 – Matt