CSV比較で「0012」と「12」を同じにしてよいか。比較前に決める3項目

記事
IT・テクノロジー
CSVの比較を始める前に、「同じ」とみなす条件を決めておくと、結果を確認しやすくなります。見た目が近い値を自動でそろえると、本来は別の商品や顧客を同じものとして扱うおそれがあるためです。

以下は説明用の架空例です。実際のお客様のデータや導入実績ではありません。

1.先頭ゼロは、値の一部ですか

移行前の品番が「0012」、移行後が「12」だったとします。品番が4桁固定なら、先頭ゼロが失われた違いとして確認する必要があります。一方、数量の列なら、表記の違いを許すルールも考えられます。どちらが正しいかは、列の用途と業務上の定義で変わります。

まず、比べる列を「識別用の文字列」「数値として扱う項目」などに分け、次の3点をメモしてください。
・列の用途は何か
・桁数や表記の決まりはあるか
・表記が変わっても同じとみなしてよいか

Excelなどで開いた時点でゼロが消えている場合は、元のCSVも確認します。失われた桁数を推測して埋める前に、元データと仕様へ戻ることが大切です。

2.空白を消す前に、どこの空白か決める

「WEST」と「WEST 」は、末尾に空白があるかどうかが異なります。これが入力時の余分な空白なのか、識別に使う文字なのかを、比較プログラムだけで判断することはできません。

先頭と末尾だけを取り除くのか、途中の空白も消すのかでは結果が変わります。全角と半角、大文字と小文字の扱いも同様です。「とりあえず全部そろえる」ではなく、変えてよい列と変換方法を列ごとに記録します。

迷う場合は、原文のままの比較結果を残し、変換後の結果を別に作る方法があります。原本は上書きせず、どの処理によって差がなくなったかを追えるようにします。自動変換による一致と、元から一致していた値は区別しましょう。

3.同じキーが2行あったら、比較を進めてよいか

架空の注文データに、注文番号「R-207」が2行あったとします。注文番号だけで行を特定する予定なら、どちらを相手側の行と組み合わせるか決められません。先に出てきた行を選んだり、片方を削除したりすると、確認すべき違いを落とす可能性があります。

注文番号に明細番号を加えれば特定できる場合もあります。ただし、列を増やせば正しくなるとは限りません。「1行が何を表すか」を確認し、比較のキーを決めます。キーの欠損と重複は、値の差分とは分けて一覧にすると確認しやすくなります。

比較を始める前の確認メモ

□ 原本を保存し、作業用のコピーを用意した
□ 各列の用途と、先頭ゼロの扱いを決めた
□ 空白・大文字小文字など、変換する範囲を決めた
□ 1行を特定するキーと、欠損・重複時の扱いを決めた
□ 比較対象の列と、対象外の列を決めた
□ 比較条件、実行日、使用した入力ファイルを記録する

少量の単純な比較なら、Excelや無料の比較ツールで十分なこともあります。上のメモを先に埋めてから、必要な方法を選んでください。

CSV2表の照合、例外の整理、再実行用の資材まで必要な方向けに、照合サービスを出品しています。本サービスは文字列をそのまま比較し、先頭ゼロ・空白・大文字小文字を区別します。自動補正や業務上の正否判断は含みません。対応範囲を確認したうえで、購入前に見積りをご相談ください。
サービス数100万件のスキルマーケット、あなたにぴったりのサービスを探す