質問に正確なファイル形式を含めていないので、次のように見えると仮定します。
This is the header line with some spaces at the beginning.
This, is, real, line 1
This, is, real, line 2
End of file. It has some spaces too at the beginning.
これが状況を正しく表している場合は、フラットファイルソースを使用し、各レコードを1つの列(EntireRowなど)で全体として読み取り、条件付き分割を使用して、次の条件を使用してヘッダー/フッターを識別できます。
LEN(EntireRow) > LEN(TRIM(EntireRow))
ここでの問題は、意味のある行をどのように分割するかです(上記の例の実際の行1と2)。別のファイルにダンプできます。これで、このファイルはヘッダーとフッターが削除されてクリーンになります。これは単純ですが、最も効率的なソリューションではありません。
解決策2:解決策2:
より良い解決策は、スクリプトコンポーネントを使用することです。行を動的に追加する方法について説明します。そのような例の1つ:http ://www.sqlis.com/post/The-Script-Component-as-a-Transformation.aspx
さて、始めに、ヘッダー/フッターが位置1から開始しないという条件を使用してヘッダー/フッターを削除するサンプルコード...エラー処理なし。上記のリンクは、出力とその出力内の列を追加する方法を示しています。列のデータ型がソースファイルのデータ型と一致していることを確認してください。
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
/*
Add your code here
*/
if ((Row.EntireRow.Length == Row.EntireRow.Trim().Length))
{
string[] sArrFields = Row.EntireRow.Split(',');
MeaningfulBuffer.AddRow();
MeaningfulBuffer.Col1 = sArrFields[0];
MeaningfulBuffer.Col2 = sArrFields[1];
MeaningfulBuffer.Col3 = sArrFields[2];
MeaningfulBuffer.Col4 = sArrFields[3];
}
}
これだけのガイダンスが問題を解決するのに十分であり、私が提供した2つの解決策の1つが機能することを願っています。返信してください。