フォルダーをループしようとしています。各ファイルの接尾部はSQLテーブルの列にあります。この接尾辞はLINQステートメントのWHERE
で、スクリプトタスクの変数です(コメントに表示されています)。述語が真の場合、SQLテーブルの同じ行にある別の列の値を返し、他の列の値をスクリプトタスクの別の変数に代入します。今のところ私はMessageBox.Showをテストしています。SSISスクリプトタスクでLINQを使用して変数に値を割り当てます。
SSISパッケージにOLEDB接続マネージャをセットアップしましたが、タスク内でLINQクエリをどのように実行できるかわからないため、接続の設定方法が不明です。どんなポインタも喜んで受け取ります。
public void Main()
{
string sourcePath = Dts.Variables["User::sourcePath"].Value.ToString();
string archivePath = Dts.Variables["User::archivePath"].Value.ToString();
string destinationPath = Dts.Variables["User::archivePath"].Value.ToString();
SqlConnection conn = new SqlConnection();
conn = (SqlConnection)(Dts.Connections["Server.Database"].AcquireConnection(Dts.Transaction) as SqlConnection);
DirectoryInfo directoryInfo = new DirectoryInfo(sourcePath);
FileInfo[] files = directoryInfo.GetFiles();
foreach (FileInfo fileInfo in files)
{
string fileName = fileInfo.ToString();
fileName = fileName.Split('_')[0]; // File Suffix
string destinationPrefix = "";
// LINQ HERE USING fileName variable:
//destinationPrefix = FROM t in Table where t.Column == fileName select destinationPrefixColumn
MessageBox.Show(destinationPrefix);
}
}