目次を開く
CSVを別システムへ入れたら「形式が不正」「行数が合わない」と言われる。
列数も文字コードも問題なさそうなら、次に確認したいのが行末の改行コードです。
CSVでは見た目が同じ改行でも、ファイル内部では CRLF と LF など複数の表現があります。
CRLFとLFの違い
代表的な行末は次の二つです。
- CRLF:
\r\n - LF:
\n
Windows系ではCRLF、Unix・Linux・macOS系ではLFが広く使われています。
現在の多くのソフトは両方を扱えますが、古いシステムや仕様の厳しいインポーターでは、期待する改行コードが決まっていることがあります。
RFC 4180では、CSVのレコードはCRLFで区切る形式として説明されています。一方、実際の現場ではLFだけのCSVも普通に流通しています。
つまり、「CSVなら必ず一種類」というより、受け取り側の仕様を確認するのが現実的です。
改行コードが原因で起きる症状
よくあるのは次のようなケースです。
- 全行が一行として認識される
- 行数が想定と合わない
- 一部のインポーターだけ失敗する
- Windowsでは通るがLinux上の処理で崩れる、またはその逆
- バッチ処理では失敗するのに表計算ソフトでは普通に開ける
表計算ソフトが吸収する差でも、別システムではエラーになることがあります。
セル内改行とは分けて考える
ここで重要なのが、レコードを区切る改行とセルの中に含まれる改行は別物ということです。
CSVでは、引用符で囲まれた値の中に改行を含めることがあります。
そのため、ファイル全体に対して単純に「LFを全部CRLFへ置換」のような処理をすると、セル内改行まで変えてしまい、別の問題を作る可能性があります。
セル内改行については、CSVのセル内改行とダブルクォートで詳しく整理しています。
まず確認する順番
インポートエラーが出たら、いきなり変換せず次の順番で確認します。
- 元CSVをコピーして残す
- 受け取り側が要求する改行コードを確認する
- 現在のCSVがCRLFかLFか調べる
- セル内改行があるか確認する
- 作業用コピーだけを変換する
- 少量データで再インポートする
VS Codeなど、改行コードを表示できるテキストエディタを使うと確認しやすいです。
変換するなら「一貫性」を見る
問題になるのはCRLFかLFかだけではありません。
一つのファイル内で改行コードが混在していると、処理系によって挙動が変わることがあります。
複数のシステムからデータを結合したCSVや、スクリプトで追記したファイルでは特に注意します。
変換後は、行数、列数、引用符、セル内改行まで再確認します。
まとめ
CSVのCRLFとLFは、画面ではほぼ見えません。
しかし、インポート先が厳密なら、それだけで処理が止まることがあります。
受け取り側の仕様を確認 → 現物の改行コードを確認 → コピーで変換 → 再検査。この順番なら、原因を見失いにくい。
CSV全体の構造もまとめて確認したい場合は、CSV Preflightでインポート前にチェックできます。
