2

ヘッダー レコードと詳細レコードを持つフラット ファイル スキーマがあります。次のようになります。

HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***

メッセージの最後に 2 行の空白行を追加する必要があります。現在、複数のレコードがある場合、次の出力が得られます。

HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***
HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***

私が見たいのは、次のようなものです。

HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***


HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***

これを行うためにカスタム パイプライン コンポーネントを構築することもできますが、必要なものを取得するためのより簡単な方法があるかどうか疑問に思っています。

4

2 に答える 2

3

フラット ファイル スキーマの Delimiter プロパティを使用することで、目的を達成できるはずです。

サンプル ファイルに基づいて、次のレコード構造を持つスキーマを作成しました。

<スキーマ>    
  <ルート>    
    <HDRグループ>    
      <HDR>    
      <リン>    

スキーマのルート ノードをクリックすると、このルート ノードのプロパティのリストが表示されます。1 つのプロパティ セクションには、「フラット ファイル」というヘッダーがあります。このフラット ファイル セクションで設定できる最初の 3 つのプロパティは、Child Delimiter、Child Delimiter Type、Child Order です。

これは、空白行を作成するようにスキーマを構成する場所です (この場合は CR LF ですが、必要に応じてさまざまなものを設定できます)。例では、次のように設定します。

子デリミタ: 0x0D 0x0A 0x0D 0x0A    
子区切り文字タイプ: 16 進数    
子注文: インフィックス

0x0D 0x0A はキャリッジ リターン ライン フィードであるため、上記はルート ノードの各子の間に固定された 2 つの空白行を作成するだけです。

<HDRGroup> は、各ヘッダーとその行が一緒に保持されるように機能します。区切り文字の設定については、次のように設定しました。

子区切り文字: 0x0D 0x0A    
子区切り文字タイプ: 16 進数    
子注文: Postfix

<HDR> および <LIN> レコードには、アスタリスクで区切られたメッセージ行の実際のスキーマ定義が含まれます。

このスキーマは、あなたが求めているもののように私には見えるもので機能します-この種のフラットファイルスキーマとそれがファイルを解析する方法は、改行の種類や改行の有無など、細部に大きく依存しますファイルの最後にある改行。

デリミタを使用する原則は変わりませんが、設定をいじる必要があることに気付くでしょう。

于 2008-10-22T00:00:29.490 に答える
0

気にする人のために、私は最終的にこれを達成するためのカスタム パイプライン コンポーネントを作成しました。

于 2008-10-21T22:45:32.870 に答える