2017-10-20 8 views
0

BIMLドキュメントを生成するためにテーブル名とソースクエリを持つCSVなどのデータソースを参照する方法はありますか?外部ソースを使用してBIMLに入力する

おかげ

+0

はい。いくつかのサンプルデータを表示し、それを使ってパッケージやタスクを作成する方法 – billinkc

答えて

1

は、C#は私の強いスーツではなく、以下もこれを行うための理想的な方法ではないかもしれない注意してください。あなたはより適切な何かを見つけられた場合、私は非常にそれについて聞きたい:)


私はBIMLプロジェクトにCSVベースのメタデータを含むことが見出されている最も簡単な方法は、C#DataTableにそれらをロードすることですオブジェクトを のC#変数オブジェクトとしてBimlで参照しています。このオブジェクトは、foreachで非常によく動作し、行を繰り返し処理します。使用するために、私は思います

public static DataTable FlatFileToDataTable(string filePath, char delimiter) 
{ 
    DataTable dt = new DataTable(); 

    using (StreamReader sr = new StreamReader(filePath)) 
    { 
     string[] headers = sr.ReadLine().Split(delimiter); 

     foreach (string header in headers) 
     { 
      dt.Columns.Add(header); 
     } 
     while (!sr.EndOfStream) 
     { 
      string[] rows = sr.ReadLine().Split(delimiter); 
      DataRow dr = dt.NewRow(); 
      for (int i = 0; i < headers.Length; i++) 
      { 
       dr[i] = rows[i]; 
      } 
      dt.Rows.Add(dr); 
     } 
    } 
    return dt; 
} 

:あなたはBIMLプロジェクト(いずれかのファイルに直接または参照.csファイル経由)でのC#を含める方法を、次のコードを使用することができます認識していると仮定すると、

StreamReaderあなたのコードファイルにもusing System.IO;を追加する必要があります。

使用あなたBIML内のコードスニペットを使用してそれを参照するために、次に、DataTableオブジェクトを定義して、上記の結果を移入することであろう。

DataTable YourDataTable = FlatFileToDataTable("<Path to CSV file>",'<Value Delimiter>'); 

... 

<Columns> 
<# foreach(DataRow r in YourDataTable.Rows){ #> 
    <Column Name="<#=r["YourColumnName"]#>" etc /> 
<# } #> 
</Columns> 
関連する問題