このガイドで防ぐ問題

顧客、商品、メールアドレスなどのCSVで重複を削除した結果、別レコードまで消してしまう事故を防ぎます。

CSVの重複削除で最も危険なのは、ツールが正常終了したのに必要な行まで消えている状態です。重複の定義は「同じ行が2つある」だけではなく、顧客ID、メールアドレス、商品コードなど、業務上どの列を同一判定へ使うかで変わります。

安全に処理するには、削除前の元ファイルを残し、判定キーを決め、削除候補と件数を確認してから確定します。件数だけを見るのではなく、キーが空の行、表記ゆれ、同姓同名など誤削除が起きやすいレコードを意識して確認することが重要です。

WORKED EXAMPLE

顧客CSVをメールアドレスで重複判定する例

次のように、見た目は同じメールアドレスでも前後空白や大文字小文字が混在するCSVを想定します。

処理・確認前

customer_id,name,email
1001,山田太郎,Taro@example.com
1002,山田太郎, taro@example.com 
1003,山田花子,hanako@example.com

処理・確認後

判定キー=email
前後空白を除去=true
大文字小文字を区別=false

削除候補: customer_id=1002
残件数: 2 / 元件数: 3

この例で確認するポイント

  • 名前ではなく業務上のキー列を決めてから処理します。
  • 前後空白や大文字小文字を正規化するかは、データの意味に合わせて選びます。
  • 削除件数だけでなく、どの行が削除候補になったか確認できる状態が安全です。

全列一致とキー列一致を使い分ける

全列一致は、バックアップの二重取込など「まったく同じ行」が重複している場合に向いています。一方、顧客や商品を一意にしたい場合は、顧客IDや商品コードなどのキー列一致が必要です。

複数列をキーにする場合は、どれか1列が同じだけで削除しないようにします。たとえば姓と名だけでは別人を区別できないため、会員IDや連絡先など業務上の一意性を確認できる項目を優先します。

  • 完全一致の重複除去:同じファイルを二重結合したとき
  • キー列一致:顧客IDや商品コードを基準に1件へまとめたいとき
  • 複合キー:店舗コード+商品コードなど、1列だけでは一意にならないとき

正規化は強くしすぎない

前後空白の除去や英字の大文字小文字統一は有効ですが、全角半角、記号、ハイフンまで無条件に消すと、本来異なるコードを同じ値として扱う場合があります。

正規化は「人が同じと判断する表記ゆれ」だけへ限定し、商品コードや管理番号のように文字そのものへ意味がある列では変更しない方が安全です。

処理後は件数の式で確認する

最低限、元件数=残件数+削除件数になることを確認します。さらに、削除候補を数件抜き取り、同一判定が妥当か目視します。

本番CSVへ上書きせず、結果を別ファイルとして保存してから業務システムへ取り込むと、判定ミスが見つかったときに戻せます。

問題が起きる主な原因

  • 全列一致とキー列一致を区別していない。
  • 前後空白や大文字小文字を別値として扱っている。
  • 削除後の件数と削除対象を保存していない。

安全に作業する手順

  1. 1

    バックアップを作成し、重複判定に使う列を決めます。

  2. 2

    空白除去や文字幅統一を適用するか事前に決めます。

  3. 3

    重複候補を確認してから削除結果と削除行を別々に保存します。

結果を利用する前の確認項目

  • 元件数、削除件数、残件数の合計が一致する。
  • 同姓同名など別人のレコードが削除されていない。
  • キー列が空の行を一律に重複扱いしていない。

作業完了前のチェックリスト

  • 元CSVを別名で保存した
  • 重複判定へ使う列を決めた
  • 空値を一律に同一扱いしていない
  • 元件数=残件数+削除件数を確認した
  • 削除候補を数件目視した
  • 結果を元ファイルへ直接上書きしていない

この方法の限界と注意点

  • メールアドレスや電話番号だけで人物を完全に同定できません。
  • 文字正規化を強くすると、本来異なるコードを同じ値として扱う場合があります。

関連する無料ツール

UtilityBoxのガイド方針

ツールの操作方法だけでなく、結果を誤用しないための具体例、確認項目、処理の限界、元データを保管すべき場面まで記載します。原因・手順・完了判定・限界を運営者が確認したガイドだけを一覧と検索対象へ掲載します。

品質確認の方法と更新方針を確認する →