毎日置き換えられる複数の Excel ファイルを含むフォルダーがあります。フォルダ内の個々の Excel ファイルの行数の合計を示す合計行数が必要です (つまり、それぞれ 10 レコードのファイルが 3 つある場合、結果数は 30 が必要です)。次に、このパッケージを毎日実行して、個々のレコードをログ テーブルに追加し、フォルダー内の毎日のレコード数を提供する必要があります。Foreach ループ コンテナーと ADO 列挙子を試してみましたが、解決策が得られないようです。
3476 次
2 に答える
1
スクリプト タスクを使用せずに適用できる優れたソリューションがあります。使用する必要があるのは、「Foreach ループ コンテナー」、「データ フロー タスク」、および「SQL 実行タスク」だけです。
変数の定義:
- V_FilesPath-> (文字列) ファイルが配置されているパスを保持します
- V_FileName-> (文字列) には、Foreach コンテナー内のファイル名が入力されます。
- V_RowCount (整数)
- V_FileRowCount (整数)
- V_TotalRecords (整数)
Foreach を定義します。
ソース ファイルを RowCount コンポーネントにマップし、変数V_FileRowCountを選択します。
「SQL 実行タスク」で、結果セットを「単一行」に変更します。
「SQL 実行タスク」の式部分で、次のプロパティ式を選択します。
式ペインで、次を発行します。
" SELECT " + (DT_STR,10,1252)@[User::V_TotalRecords] + " + " + (DT_STR,10,1252) @[User::V_FileRowCount] + ", 1 + " +(DT_STR,10,1252 ) @[ユーザー::V_RowCount]
上記をクリアしたら完成!
結果を確認したい場合は、スクリプト タスクを追加します (結果を表示するためだけに)
「Public Void Main」で始まる部分の代わりに、次のスクリプト コードを貼り付けます。
public void Main()
{
try
{
string Variables = "Loop Counter: " + Dts.Variables["User::V_RowCount"].Value.ToString() + " Total Records in all files: " + Dts.Variables["User::V_TotalRecords"].Value.ToString();
MessageBox.Show(Variables).ToString();
}
catch (Exception Ex)
{
MessageBox.Show(Ex.Message);
}
}
于 2016-12-18T19:55:55.347 に答える