値の数が合わない行がある CSV
3 行目だけ値が 1 つ足りない壊れた例です。その行は判定に含めず、残りの行で候補を判定します。除外した行数を要点の表に示します。
入力
CSV
a,b 1,2 3 4,5
区切り文字
カンマ(,)
1 行目は見出し(列名)
はい
調べる列の組の最大の列数
2 列の組まで
空欄(空白だけの値を含む)を NULL として扱う
はい
結果
エラー 1 件・警告 0 件・情報 1 件
指摘(エラー・警告・情報)
- エラー 3 行目 値が 1 個です(列は 2 個)。この行は判定に含めていません。カンマを含む値を二重引用符で囲み忘れていないか確認してください。
- 情報 全体 この CSV の行だけでの判定です。行が増えると重複や空欄が現れることがあります。値の比較は完全一致で、前後の空白・大文字小文字・全角半角の違いは別の値として数えます。主キーにしてよいかは、データの意味(将来も重複しないか)で決めてください。
| データの行数 | 2 行 |
|---|---|
| 列数 | 2 列 |
| 単独で候補の列 | a・b |
| 列の組で候補 | 0 組 |
| 判定に含めなかった行 | 1 行 |
列ごと・列の組ごとの判定
| 種類 | 列 | 異なる値の数 | 空欄の数 | 判定 |
|---|---|---|---|---|
| 列 | a | 2 | 0 | 候補(この列だけで一意) |
| 列 | b | 2 | 0 | 候補(この列だけで一意) |
検算(この結果になる理由)
3 行目は値が 1 個で列数 2 と合わず、RFC 4180 2 節の 4 に反するためエラー 1 件で、判定から除きます。残る 2 行の a は 1 と 4、b は 2 と 5 でどちらも一意なので候補になります。
判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。
このツールの制約
- 判定はサンプルの行だけで行います。今のデータで重複がなくても、将来のデータで重複しないとは限りません。意味のある識別子(会員番号・注文番号など)かどうかで最終的に決めてください。
- 値の比較は完全一致です。前後の空白・大文字と小文字・全角と半角の違いは別の値として扱うため、取り込み先で正規化すると重複することがあります。
- 列の組は最大 3 列まで、調べる組は最大 5,000 組までです。列が多い CSV では、組の最大の列数を小さくして調べてください。
- ファイルは UTF-8 として読みます。Shift_JIS の CSV は文字化けするため、表計算ソフトで UTF-8 として保存し直してから使います。
ご利用にあたって
- この結果は設計の参考です。実際に表を作る前に、データの意味と将来の増え方にもとづいて主キーを決めてください。
- 大きなファイルでは、列の組を調べるのに時間がかかることがあります。そのため、調べる組の数に上限を設けています。