目次を開く
CSVをインポートしたら、最後の一件だけエラーになる。あるいは、なぜか空のレコードが一件できる。
そんなときは空行・空レコードを確認します。
画面で見ると何もない一行でも、CSV内部では「完全な空行」「区切り文字だけの行」「空白文字だけの行」が別々に存在します。
「空行」には種類がある
一口に空行と言っても、実際にはいくつかあります。
1. 完全に空の行
文字が何もなく、改行だけが入っている状態です。
インポーターによっては無視されますが、形式エラーとして止まるものもあります。
2. 区切り文字だけの行
たとえば4列のCSVなら、次のような行です。
,,,
見た目は空でも、構造上は4つの空セルを持つ1レコードです。
必須項目があるシステムへ入れれば、その一件がバリデーションエラーになることがあります。
3. スペースやタブだけの行
人間には空に見えても、半角スペース、全角スペース、タブなどが残っている場合があります。
「空なら無視する」という処理でも、空白文字があるためデータありと判断されることがあります。
なぜ末尾に空行ができるのか
原因は珍しくありません。
- 表計算ソフトで余分な行まで編集範囲になった
- コピー&ペーストで最後に改行が増えた
- 複数ファイルを結合したときに空行が挟まった
- スクリプトで追記するとき、毎回余分な改行を付けた
- 「空の行」ではなく、数式結果が空文字の行を書き出した
CSVを目で開いても、末尾の数行は見落としやすいところです。
空行を全部消せばいいわけではない
ここでも雑な一括削除は危険です。
引用符で囲まれたセルの中に正当な改行が含まれているCSVでは、単純な行単位処理でデータを壊す可能性があります。
また、業務仕様によっては「値が空でもレコード自体は必要」というケースもあります。
消す前に、本当に不要なレコードなのかを確認します。
安全な確認手順
おすすめは次の順番です。
- 元ファイルを保存する
- 末尾だけでなく途中にも空行がないか確認する
- 完全な空行か、区切り文字だけの行かを分ける
- 必須列がすべて空のレコードを特定する
- 不要と確認できたレコードだけ作業用コピーから削除する
- 行数と列数を再確認する
- 少量でテストインポートする
列数のズレも同時に起きている場合は、CSVの列数が合わない原因も確認してください。
インポート側では必須列を使って判定する
自分でCSV取込処理を作っているなら、「一行が空っぽに見えるか」だけで判定するより、必要な列を明確にした方が安全です。
たとえば id と email のどちらかが必須なら、その条件を満たさないレコードを事前検査で弾く。
こうしておけば、空白文字や区切り文字だけの行に振り回されにくくなります。
まとめ
CSVの空行は小さな問題に見えますが、取込側から見ると一件の不正レコードになっていることがあります。
特に末尾の空行、カンマだけの行、空白文字だけの行は見落としやすい。
削除する前に種類を確認し、元ファイルを残したまま作業用コピーで直すのが安全です。
大量のCSVは、目視だけで末尾まで確認するより機械的な検査を併用する方が確実です。CSV Preflightでは、インポート前の構造確認をブラウザ内で行えます。
