2017-10-20 1 views
0

BIML 문서를 생성하기 위해 테이블 ​​이름과 소스 쿼리가있는 CSV 또는 다른 데이터 소스를 참조 할 수 있습니까?외부 소스를 사용하여 BIML에 입력

감사

+0

예. 몇 가지 샘플 데이터를 보여주고 어떻게 사용하여 패키지 및 작업을 수행할까요? – billinkc

답변

1

는 인식 C#을 내 강점이 아니고 아래도이 작업을 수행 할 수있는 이상적인 방법이 될하지 않을 수 마십시오. 당신이 더 적합 무언가를 발견 할 경우는 C#을 DataTable에로드 할


내 Biml 프로젝트로 CSV 기반의 메타 데이터를 포함 발견하는 가장 쉬운 방법입니다 :)에 대해, 난 아주 많이 듣고 싶습니다 그런 다음 내 Biml에서 이라는 C# 변수 개체로 참조하는 개체는 행을 반복 할 때 foreach과 매우 잘 맞습니다. 당신이 당신의 Biml 프로젝트에 C 번호를 포함하는 방법을 알고 가정

는 (직접 또는를 통해 .cs 파일 참조 파일에), 다음과 같은 코드를 사용할 수 있습니다

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; 
} 

나는를 사용하기 위해 생각 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> 
관련 문제