ホームページ > データベース > mysql チュートリアル > SSIS は、異なるサブフォルダーから同じ名前とスキーマを持つ複数のテキスト ファイルを 1 つのデータベース テーブルに効率的にインポートするにはどうすればよいですか?

SSIS は、異なるサブフォルダーから同じ名前とスキーマを持つ複数のテキスト ファイルを 1 つのデータベース テーブルに効率的にインポートするにはどうすればよいですか?

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 は、異なるサブフォルダーから同じ名前とスキーマを持つ複数のテキスト ファイルを 1 つのデータベース テーブルに効率的にインポートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート