「01」と「1」の書き方の違い
親のキーが 1 と 2、子のキーが「01」と 2 の例です。「01」は文字列として親に無いので孤児ですが、数値として 1 と同じことを警告に添えます。
入力
親の CSV(例: 顧客一覧)
id 1 2
子の CSV(例: 注文一覧)
cid 01 2
親の 1 行目は見出し
はい
子の 1 行目は見出し
はい
親のキーの列(左から何列目か)
1
子の参照列(左から何列目か)
1
「NULL」という文字も NULL とみなす
はい
結果
エラー 0 件・警告 1 件・情報 1 件
指摘(エラー・警告・情報)
- 警告 子 2 行 親に存在しないキー「01」を子の行が持っています。孤児レコードです。親に追加するか、子のキーを直してください。 数値としては親のキー「1」と同じです(先頭の 0 などの書き方の違いの可能性)。
- 情報 全体 子のキーが空欄 または NULLの行(0 行)は NULL とみなし、検査から除きました。PostgreSQL の既定の外部キー(MATCH SIMPLE 相当)では、参照列が NULL の行は制約を満たさなくてよいとされています。
| 親の行数 | 2 行 |
|---|---|
| 子の行数 | 2 行 |
| 孤児レコード | 1 行 |
| NULL で検査対象外 | 0 行 |
孤児レコードの一覧
| 子の行 | 親に無いキー | 子の行の内容 |
|---|---|---|
| 2 | 01 | 01 |
検算(この結果になる理由)
「01」は文字列としては「1」と同じではないため孤児になります。ただし数値にすると 1 で親に存在するので、先頭の 0 の違いの可能性があると警告に書きます。2 は親にあり、孤児は 1 行です。
判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。
このツールの制約
- キーは 1 列だけを扱います。複数列の複合キーや、MATCH FULL(一部だけ NULL の行を違反とする)は検査できません。
- キーの比較は文字列の完全一致です。大文字小文字、前後の空白以外の表記ゆれ、全角と半角の違いは別の値として扱います。
- 大きな CSV は端末の性能により処理に時間がかかることがあります。表には 2,000 行まで載せます。
ご利用にあたって
- 孤児レコードの有無は、貼り付けた 2 つの CSV の範囲だけの結果です。データベース全体の整合性は、取り込み後の外部キー制約で確かめてください。
- 顧客情報などを含む場合でも、ブラウザの外には送信されません。画面の共有やスクリーンショットにはご注意ください。