2016-09-07 7 views
0

フォルダーをループしようとしています。各ファイルの接尾部は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);    
    } 
} 

答えて

0

イムラン、

あなたは私たちに、テーブルオブジェクトの詳細情報を提供する必要があります。ここで私が持っているどのくらいです。データベースからテーブル変数にデータを取得するコードはありません。

var query = "Select * from SomeTable Where SomeCondition Order by Somefields"; 
var Table = conn.ExecuteQuery(query); 

これで、fileinfoループ内でスキャンできるテーブルが作成されます。拡張子を調べるフィールドや、元と移動先のフォルダで行っていることを教えてくれていないからです。私はそれ以上のコードを与えることはできません。また、ポストバック

fileInfo.FileName //Name of file 
fileInfo.FullName // full path and name of file 
fileInfo.Extension // just the extension 
fileInfo.MoveTo() // will move file to new location 
fileInfo.CopyTo() // will copy file to new location 

...有用である可能性があるFileInfoオブジェクトでいくつかのものを見ていると、より多くの助けを受け取るためにあなたの質問を明確にします。

関連する問題