簡體   English   中英

如何將數據從SQL表導出到SSIS中的多個excel文件?

[英]How to export data from SQL table to multiple excel files in SSIS?

我創建了一個SSIS包,它從SQL中提取數據並將其加載到excel中。 我有問題使這個包動態化並將數據加載到多個excel文件中。

我首先創建了一個執行SQL任務,它使用SQL代碼保存所有文件名: SELECT FileName FROM Files ,其結果集將存儲在變量FileNameObj 然后我創建了一個Foreach循環容器並在里面添加了一個數據流任務。

Foreach循環容器設置: Foreach ADO枚舉器,ADO對象源變量 - FileNameObj ,變量映射 - FileName和Index - 0.在數據流任務下,我添加了一個指向文件路徑的OLE DB源和Excel目標: C:\\Test\\ABC.xlsx

這是Connection Manager屬性:

ConnectionStringProvider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Test\\ABC.xlsx;Extended Properties="Excel 12.0;HDR=YES";

DelayValidation設置為True

ExcelFilePathC:\\Test\\ABC.xlsx

然后我用Property ExcelFilePath和Expression創建了一個表達式: "C:\\\\Test\\\\"+ @[User::FileName]+".xlsx"然后我的ConnectionString變為: Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Test\\.xlsx;Extended Properties="Excel 12.0;HDR=YES";

我已經在測試文件夾中創建了所有文件模板(所有文件都相同)。 我收到以下錯誤:

數據流任務出錯[Excel目標[131]]:SSIS錯誤代碼DTS_E_OLEDBERROR。 發生OLE DB錯誤。 錯誤代碼:0x80040E37。

數據流任務出錯[Excel目標[131]]:打開“Sheet1 $”的行集失敗。 檢查數據庫中是否存在該對象。

來自HRESULT的異常:0xC02020E8(Microsoft.SqlServer.DTSPipelineWrap)

我究竟做錯了什么? 或者甚至可以在SSIS中執行此操作?

1

2

3]

4]

5]

6]

7]

8]

9]

10

11

12

請參見此處: 動態為excel連接字符串指定文件名

使用ExcelFilePath ,而不是ConnectionString

只是為了澄清:

  • 如果要將具有相同列的相同數據加載到多個Excel工作表中,則只需導出一次並對文檔執行文件復制將更加容易
  • 如果每個工作表都有不同的列,那么這不會起作用 - 每個數據流在每次運行時都需要具有相同的列

  • 如果您要加載相同的列但不同的過濾數據,那么您可能需要考慮為什么要這樣做。 是否要克服excel中的行限制? 如果是這樣,請導出為CSV。 它是否為用戶生成自定義報告? 請考慮使用報告工具。

更新1

你應該嘗試很多事情:

  1. 安裝Access數據庫引擎

下載鏈接: Microsoft Access數據庫引擎2010可再發行組件

  1. 以32位模式運行Package

在“項目”屬性中,將64位運行時屬性更改為False

  1. 檢查Sheet1存在於所有模板中

  2. 為filepath變量分配默認值


初步答復

動態Excel連接字符串

首先, .XLSX格式的excel連接.XLSX如下所示:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Test\\"+ @[User::FileName]+ ".xlsx; Extended Properties=\"Excel 12.0 Xml;HDR=YES\";"

推薦的方法是(@ Nick.McDermaid提到的) ,將值賦給ExcelFilePath屬性

但你必須考慮許多其他事情:

  1. 所有excel文件必須具有相同的結構, 否則此包將始終失敗
  2. 將“數據流任務Delay Validation屬性設置為“ True

參考

我找到了解決自己問題的方法:為FileName變量分配一個默認值。 我分配了ABC並且它有效。 按預期生成兩個文件,一個用於ABC,一個用於DEF。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM