異なる長さの行を処理する

行の長さが異なる固定幅ファイルを処理します。短い行の扱いと切り詰めエラーの回避方法を学びます。

Auto-Detection

詳細な説明

固定幅ファイルの可変長行

固定幅ファイルは理想的には均一な行長を持ちますが、実際のデータでは末尾ホワイトスペースの除去、レコード末尾のオプションフィールド、混合レコードタイプなどにより、異なる長さの行がしばしば存在します。

よくあるシナリオ

末尾スペースが除去された場合:

John      Smith     New York
Jane      Doe       LA
Bob       Johnson

3行目はcityフィールドが空で、ファイル転送時に末尾スペースが除去されたため短くなっています。

混合レコードタイプ:

H20240115Company Inc
D001Alice     1234.56
D002Bob       9876.00
T00212345.56

ヘッダー(H)、詳細(D)、トレーラー(T)レコードはそれぞれ異なる構造と長さを持ちます。

コンバーターの短い行の処理

行が期待される合計幅より短い場合:

  • 行内に開始するが行を超えるフィールドは部分的な値(利用可能な文字のみ)を生成
  • 行長を完全に超えた位置から始まるフィールドは空文字列を生成
  • 警告が表示される:「Row X: line is Y chars but expected at least Z」

混合長データの戦略

  1. レコードタイプでフィルタ:異なる行が異なる構造を持つ場合、別々のグループに分けてそれぞれ固有のカラム定義で変換
  2. 最大幅の定義を使用:最長のレコードタイプに合わせてカラムを定義し、短いレコードは末尾フィールドが空になる
  3. 短い行をパディング:前処理ツールで変換前に行をスペースで均一な長さにパディング

混合長での自動検出

自動検出アルゴリズムは短い行の行長を超えた位置をスペースとして扱います。多くの行が短い場合、境界検出にバイアスがかかる可能性があります。最良の結果を得るには、少なくとも70%の行にフルレングスのデータがあることを確認してください。

ユースケース

末尾ホワイトスペースが除去されたログファイル、バッチ処理出力、レガシーエクスポートなど、固定幅構造に従いつつ行長が異なるファイルを処理する場合に使用します。

試してみる — Fixed Width ↔ CSV Converter

フルツールを開く