CSVは大量の情報をまとめて扱える一方、一行の誤りが多数の公開データへ影響します。新規登録だけでなく、既存データの更新、公開状態の変更、関連情報の追加を行う場合、どの値を正として上書きするかを決めなければなりません。
処理が「正常終了」と表示されても、意図したデータが登録されたとは限りません。文字化け、列ずれ、重複、空欄による上書き、関連付けの解除など、画面を数件見ただけでは分からない問題があります。
私たちがCSV機能で怖いと感じるのは、エラーで止まることよりも、正常終了したまま意図しない更新が広がることです。そのため、入力形式だけでなく、更新規則、事前検証、結果確認、復旧までを一つの仕組みとして設計します。
最初に、新規登録と更新を見分けるキーを決める
同じ名称の商品や同姓同名の利用者が存在するため、名前だけで既存データを判断してはいけません。システム内ID、外部システムの管理番号、変更されないコードなど、一件を識別できるキーを決めます。
キーがない行は新規登録するのか、エラーにするのかを明確にします。どの列で同一性を判断したかを処理結果に残すと、意図しない重複や上書きを追いやすくなります。
空欄を「削除」と「変更なし」に分ける
CSVの空欄には、値を消したい場合と、その項目を変更したくない場合があります。この二つを区別しないと、部分更新のつもりで既存情報を消してしまいます。
更新CSVでは、空欄なら変更しない、明示的な削除値がある場合だけ消す、といった規則を決めます。画像、PDF、カテゴリ、公開期間など、空欄の意味が列によって異なる場合は、項目定義へ記載します。
列名・型・選択肢を公開画面と対応させる
管理画面では「公開中」と表示されても、CSVでは数値や内部コードを求める場合があります。日付、数値、真偽値、カテゴリ、複数選択、改行、URLなど、列ごとに受け入れる形式を決めます。
画面上の項目名、CSVの列名、保存される値、公開画面の表示を対応させます。利用者へ渡す雛形には、列名だけでなく、代表データと入力例を含めます。
本登録の前に、結果を確認できるようにする
大量更新を実行する前に、ファイル全体の形式と各行の内容を検証します。登録予定、更新予定、変更なし、エラーの件数を分け、どの行がどの理由で処理されるかを確認できる状態にします。
可能であれば実際には保存しない事前確認を用意します。少なくとも、本番データの複製や検証環境で代表CSVを実行し、変更される項目と変更前後の値を確認します。
一行のエラーで、どこまで処理するかを決める
途中の一行でエラーが起きたとき、それ以前の行だけ保存されると、ファイルの一部だけ反映された状態になります。全件を一つの処理として戻すのか、正常行だけ登録しエラー行を再提出するのかを、業務に合わせて決めます。
正常行だけ進める場合は、成功・失敗・未処理を識別できる結果ファイルやログを残します。同じCSVを再実行したときに重複登録されないことも重要です。
関連データと削除済みデータを守る
一件の商品に画像、資料、カテゴリ、履歴などが紐づく場合、基本情報の更新だけで関連データを消してはいけません。CSVに含まれない関連情報は保持するのか、CSVを完全な正として置き換えるのかを決めます。
CSVに行が存在しないことを削除指示とみなすと、ファイルの出力漏れで大量削除が起きます。削除や非公開は専用列または別工程とし、対象件数を確認してから実行します。
取込後は、画面と業務の両方を確認する
処理件数が一致した後、一覧、詳細、検索、公開状態、画像や資料、通知など、データが使われる場所を確認します。新規、更新、空欄、複数カテゴリ、長文、特殊文字など、条件の異なる代表データを選びます。
外部システムから定期的にCSVが届く場合は、前回との差分件数、処理時刻、失敗通知、再実行方法を運用へ含めます。自動取込でも、担当者が処理結果を確認できなければ安全な運用にはなりません。
バックアップは、戻せることまで確認する
一括更新前には対象データをバックアップします。ただし、ファイルがあるだけでは復旧できるとは限りません。どの時点へ戻すのか、関連データも戻るのか、更新後に入った別の変更をどう扱うのかを確認します。
全体復元が難しい場合は、変更前後の値を履歴として残し、対象行だけ戻せる方法も検討します。復旧手順と実行権限を決め、本番で初めて試す状態を避けます。
この方法が向いているケース
- 商品、物件、求人、会員などを大量登録する
- 外部システムから定期的にデータを受け取る
- 既存データを一括で更新する
- 複数担当者が同じCSV雛形を使う
- 一覧、詳細、検索など複数画面で同じデータを利用する
CSV以外を選ぶべきケース
リアルタイム性が必要な情報、複雑な関連付け、頻繁な双方向更新にはAPI連携が適する場合があります。少量で確認判断が多い更新は、管理画面から一件ずつ操作した方が安全です。
CSVが使えることを目的にせず、更新頻度、件数、確認責任、失敗時の復旧から方法を選びます。
一括更新チェック
- 一件を識別する不変のキーがあるか
- 空欄の意味を項目ごとに決めたか
- 列名、型、選択肢、保存値を定義したか
- 登録、更新、変更なし、エラーを事前に確認できるか
- 部分失敗と再実行の規則を決めたか
- 関連データと削除済みデータの扱いを決めたか
- 取込件数と代表画面を照合したか
- バックアップから戻す手順を確認したか