首頁 > 資料庫 > mysql教程 > SSIS 如何有效地將不同子資料夾中具有相同名稱和架構的多個文字檔案匯入單一資料庫表中?

SSIS 如何有效地將不同子資料夾中具有相同名稱和架構的多個文字檔案匯入單一資料庫表中?

DDD
發布: 2024-12-29 11:09:12
原創
807 人瀏覽過

How can SSIS efficiently import multiple text files with the same name and schema from different subfolders into a single database table?

匯入具有相同名稱和架構的文字檔案:SSIS中的子資料夾遍歷

挑戰:將多個具有相同名稱和架構的文字檔案匯入到當檔案駐留在單獨的檔案中時,單一資料庫表可能會成為一個障礙

解決方案:在SQL Server Integration Services (SSIS) 中,您可以使用Foreach 檔案容器輕鬆應對這項挑戰。

Foreach 檔案容器:

此容器迭代檔案集合,對每個檔案套用一組指定的任務。透過在容器內啟用「遍歷子資料夾」選項,SSIS 將遞歸地深入子目錄,處理與指定檔案遮罩相符的所有檔案。

應用表達式:

要在執行期間動態修改平面檔案連線管理員的 ConnectionString 屬性,請利用表達式。將目前檔案名稱的值指派給 ConnectionString 運算式。這保證了文件來源隨著容器循環文件而變化。

變數賦值:

建立一個變數來表示 Foreach 檔案容器中的目前檔案。這允許後續任務存取文件的路徑並根據當前正在處理的文件執行必要的操作。

資料流任務:

在容器的每次迭代內,包括一個資料流任務來處理導入的資料。此任務由一個平面檔案來源(讀取檔案)、一個行計數轉換(用於計算輸入行數)和一個 OLE DB 目標(將資料載入到目標表中)組成。

範例程式碼:

以下是更詳細的程式碼範例來實現解決方案:

<!-- C# code using System.IO to demonstrate a different approach -->
// Import System.IO for file I/O operations
using System.IO;

// Get the current directory
string currentDirectory = Directory.GetCurrentDirectory();

// Define the source data directory
string sourceDirectory = Path.Combine(currentDirectory, "SSISDATA\SO\TEST");

// Get all files with the specified extension
var files = Directory.GetFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories);

// Iterate through each file
foreach (string file in files)
{
    // Get the file name without the extension
    string fileName = Path.GetFileNameWithoutExtension(file);

    // Load the data from the file into a data table
    DataTable data = GetDataFromFile(file);

    // Insert the data into the target table
    using (var connection = new SqlConnection("connection string"))
    {
        using (var command = new SqlCommand("INSERT INTO TargetTable (File, Data) VALUES (@File, @Data)", connection))
        {
            command.Parameters.AddWithValue("@File", fileName);
            command.Parameters.AddWithValue("@Data", data);

            connection.Open();
            command.ExecuteNonQuery();
        }
    }
}
登入後複製

上面的C# 程式碼示範了另一種方法,使用系統級功能以遞歸方式從來源資料目錄中檢索具有指定副檔名的所有檔案並將它們插入目標資料庫表中。

以上是SSIS 如何有效地將不同子資料夾中具有相同名稱和架構的多個文字檔案匯入單一資料庫表中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板