首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

SSIS 實戰教程:Foreach 循環容器 + 文件枚舉器 批量導入目錄下所有 TXT 文件

     編輯:DB2 教學

SSIS 實戰教程:Foreach 循環容器 + 文件枚舉器 批量導入目錄下所有 TXT 文件

SQL Server Integration Services (SSIS) 中 Foreach 循環容器** 配合 Foreach 文件枚舉器 是實現「目錄下所有同結構文件批量入庫」的標準模式。本文以 SQL Server 2008 R2 為例,通過圖文並茂的 10 步驟,完整演示從包創建到動態連接字符串綁定的全過程。

一、場景與前置條件

  • 源目錄:C:\Data\TxtFiles\ 下有多個 .txt 文件,結構完全一致(列數、分隔符、編碼)。
  • 目標:SQL Server 表 dbo.ImportedData,列對應文件列。
  • 工具:Visual Studio 2008 (BIDS) / SSDT。

二、步驟詳解

1. 創建控制流骨架

拖入 Foreach 循環容器 → 容器內拖入 數據流任務。
控制流佈局

2. 配置 Foreach 文件枚舉器

右鍵容器 → 編輯 → 集合 頁籤:

  • 枚舉器:**Foreach 文件枚舉器**
  • 文件夾:C:\Data\TxtFiles\
  • 文件:*.txt
  • 檢索文件名:**完全限定名稱** (包含完整路徑,供後續連接使用)

集合配置

3. 變量映射:捕獲當前文件路徑

變量映射** 頁籤 → 新增變量 User::CurrentFilePath (類型 String) → 索引 0。
每次循環迭代,該變量自動賦值為當前枚舉到的文件完整路徑。
變量映射

4. 設計數據流

雙擊進入數據流標籤 → 拖入 平面文件源 + OLE DB 目標 → 連接綠箭頭。
數據流佈局

5. 配置平面文件連接管理器 (靜態模板)

雙擊平面文件源 → 新建連接管理器 → 瀏覽選擇目錄下**任意一個** .txt 文件作為模板 → 設置列分隔符、列名、數據類型。
平面文件連接管理器

列** 頁籤調整輸出列名、類型。完成後連接管理器名為 FlatFileSrc。

6. 配置 OLE DB 目標

雙擊 OLE DB 目標 → 選擇/新建數據庫連接 → 選擇目標表 (可點「新建」自動建表) → 列映射自動匹配。
OLE DB 目標配置

7. 核心步驟:動態綁定連接字符串

這是實現「每次循環讀取不同文件」的關鍵!

  1. 右鍵數據流畫布空白處 → 選擇 屬性。
  2. 在屬性視窗中找到 Expressions → 點擊省略號按鈕。
  3. 屬性選擇 ConnectionString (或 ConnectionStringExpression)。
  4. 表達式編輯器中:展開 變量 → 拖入 @[User::CurrentFilePath] → 確定。
    表達式編輯器

原理:每次 Foreach 迭代更新變量 → 表達式重新求值 → 平面文件源連接字符串指向新文件 → 數據流讀取新文件數據 → 寫入目標表。

8. 執行驗證

點擊啟動調試 (F5)。控制台輸出顯示 Foreach 循環執行 5 次 (假設 5 個文件),每次數據流傳輸 1 行,目標表最終有 5 行數據。
執行結果 數據流執行詳情

三、進階擴展技巧

需求實現方式
文件編碼不一致在平面文件連接管理器中設置 CodePage (如 65001 UTF-8, 936 GBK)
首行列名/跳過行連接管理器「常規」頁籤設置 HeaderRowsToSkip
錯誤行重定向平面文件源錯誤輸出配置「重定向行」到錯誤表/文件
處理完成後歸檔/刪除源文件Foreach 容器內數據流後添加「文件系統任務」移動/刪除文件,使用同一變量路徑
動態目標表名OLE DB 目標使用「表名或視圖名稱變量」綁定另一變量

四、總結

Foreach 文件枚舉器 + 變量映射 + 連接管理器表達式綁定,構成 SSIS 批量處理同結構文件的**鐵三角模式**。掌握「完全限定名稱」獲取路徑、「ConnectionString 表達式」動態切換源、錯誤重定向與後處理任務鏈,即可應對絕大多數文件入庫自動化場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved