CSVバックアップを取らずに一括更新しないための運用ルール

ShopifyのCSV一括インポートには「元に戻す」ボタンがありません。更新前にバックアップCSVを必ず保存し、ファイル名に日付と目的を入れ、差分を確認してから本番インポートを回す――この3ステップをチームの運用ルールにすると、誤操作の被害を最小限に抑えられます。

なぜCSVバックアップが前提になるのか

Shopify管理画面から商品CSVをエクスポートして編集し、再度インポートすると、CSVに含まれる全商品の該当列がそのまま上書きされます。もし誤った列を書き換えていた場合、管理画面からは変更前の値を取り戻す手段がありません。

特に次のようなケースで事故が起きやすくなります。

  • 価格列の小数点を間違えて100円→10,000円に更新してしまった
  • 在庫数を誤ってゼロで上書きし、商品が一斉に「在庫切れ」になった
  • 複数人が同時にCSVをダウンロードし、別々の編集をインポートして互いの変更を消し合った
  • 日本語の説明文をUTF-8で保存し忘れ、文字化けしたままインポートされた

バックアップCSVは復旧の土台になります。元の値を確認でき、戻せる可能性が高まります。ただし、CSVに含まれる列、画像、variant構成、在庫ロケーション、インポート設定によっては完全に戻せるとは限らないため、変更対象列とインポート設定も記録しておくことを推奨します。

バックアップファイルの命名ルール

バックアップCSVはあとで探しやすい名前に統一します。推奨フォーマットは次のとおりです。

基本フォーマット

products_export_YYYYMMDD_before-[目的].csv

具体例:

ファイル名 用途
products_export_20260527_before-price-fix.csv 価格修正前のバックアップ
products_export_20260527_before-bulk-seo.csv SEOタイトル・説明一括変更前
products_export_20260527_before-new-items.csv 新規商品追加前の現行データ
products_export_20260527_before-tag-cleanup.csv タグ整理前のバックアップ

命名に含めるべき要素

  1. 日付 ― いつのバックアップか一目で分かる
  2. before ― 更新「前」であることが明確になる
  3. 目的ラベル ― 何の作業のためのバックアップか分かる

チームで共有フォルダに保存する場合、これらの要素が揃っていれば、数週間後でも「あの価格修正の前のデータ、どれだっけ?」と探す手間が省けます。

更新前に保存するもの

CSVインポートを行う前に、次の3つを必ず保存します。

保存対象 保存方法 理由
現行のエクスポートCSV そのままリネームして共有フォルダへ 復旧用のマスターデータ
編集後のCSV(インポート用) 同じフォルダに_after付きで保存 何を変更したか後から追跡できる
差分レポート diffツールの出力をテキスト保存 意図しない変更が混入していないかの証拠

保存先はチーム全員がアクセスできる共有フォルダ(Googleドライブ、SharePoint、社内NASなど)を一つ決めておきます。ローカルPCのデスクトップに置いたままでは、本人が休んだときに他の人がバックアップを見つけられません。

共有フォルダの構成例

shopify-csv-backup/
├── 2026/
│   ├── 05/
│   │   ├── 27_price-fix/
│   │   │   ├── products_export_20260527_before-price-fix.csv
│   │   │   ├── products_import_20260527_after-price-fix.csv
│   │   │   └── diff_20260527_price-fix.txt
│   │   └── 28_tag-cleanup/
│   │       ├── products_export_20260528_before-tag-cleanup.csv
│   │       ├── products_import_20260528_after-tag-cleanup.csv
│   │       └── diff_20260528_tag-cleanup.txt

差分確認ワークフロー

バックアップを取っただけでは不十分です。インポートする前に「変更前」と「変更後」の差分を確認し、意図した列だけが書き換わっているか検証します。

手順

  1. Shopify管理画面から「商品をエクスポート」し、_before付きで保存
  2. このCSVをコピーして編集用ファイルを作成
  3. 編集が終わったら、_after付きで保存
  4. diffツールで_before_afterを比較
  5. 差分が想定範囲内か確認(列数、行数、変更箇所)
  6. 問題なければ_afterファイルをインポート

diff確認のポイント

確認項目 期待される結果 NG例
行数の変化 商品追加時のみ増加、それ以外は同じ 商品削除の意図がないのに数百行減っている
変更列 対象列だけが変わっている 価格修正のはずが説明文も変わっている
Handle列 既存商品のHandleは一切変わっていない Handleが書き換わって新規商品として二重登録
文字化け 日本語が正常に表示される 「???」や「�」が混入している

復旧手順:バックアップCSVをインポートし直す

万が一、インポート後のデータに問題があった場合の復旧手順です。

  1. 共有フォルダから_beforeバックアップCSVを見つける
  2. ファイルを開いて文字化けがないか確認(UTF-8であること)
  3. Shopify管理画面の「商品をインポート」から_beforeCSVをアップロード
  4. 「既存の商品を上書きする」オプションが有効であることを確認
  5. インポート完了後、管理画面で数件の商品を開いて値が戻っているか目視確認

注意点: バックアップCSVに含まれていない列(インポート時に空白だった列)は上書きされないため、画像やバリアント情報は元のまま残ります。ただし、CSVに含まれている列は空白でも上書きされるため、意図せぬ列を空白にしていないか、事前のdiff確認で防ぐことが重要です。

チーム運用ルールのチェックリスト

複数人でCSV更新を行うチームでは、バックアップとインポートの手順をルール化しておくことで事故を予防できます。

# ルール 目的
1 インポート前に必ずエクスポートしてバックアップを保存する 復旧手段の確保
2 バックアップファイルの命名ルールに従う 検索性の向上
3 インポート前にdiffレポートを作成する 意図しない変更の検出
4 差分確認は編集者以外のメンバーが行う ダブルチェックによるヒューマンエラー防止
5 インポート実行前に担当者をチャット等で宣言する 同時更新の衝突防止
6 インポート後、5〜10商品をサンプリングして目視確認する 実際の反映結果の検証
7 バックアップCSVは最低30日間は削除しない 遅れて発覚した問題への対応
8 インポート作業ログ(日時・担当者・目的)を残す 事後追跡と振り返り

自動化できる部分と人間の判断が必要な部分

自動化・ツールで機械的に確認できること

  • ファイル名チェック ― 命名ルールに合致しているかスクリプトで検証
  • 行数・列数の比較 ― before/afterの行数差、列構成の変化を自動レポート
  • Handle列の不変確認 ― 既存行のHandleが変わっていないかスクリプトで検出
  • 文字エンコーディング検証 ― UTF-8 BOMなしであることを自動確認
  • 必須列の存在確認 ― Title、Handleなどの必須列が欠落していないかチェック

人間が判断すべきこと

  • 変更範囲の妥当性 ― 「今回の価格修正で3000商品中2500商品が変わるのは妥当か?」は文脈による
  • インポートの承認 ― diffレポートを見て「これを本番に反映してよいか」を判断
  • 緊急時の復旧判断 ― バックアップCSVを戻すべきか、一部だけ手動修正するべきか
  • 同時作業の調整 ― 他の担当者がCSV編集中かどうかの確認と作業順序の決定

機械的に確認できる部分をスクリプトやシェルコマンドに任せ、人間は本質的な判断に集中するのが効率的な運用です。たとえば、次のようなワンライナーで行数の急激な変化を検出できます。

# before/afterの行数を比較(ヘッダー除く)
echo "before: $(($(wc -l < products_export_20260527_before-price-fix.csv) - 1))"
echo "after : $(($(wc -l < products_import_20260527_after-price-fix.csv) - 1))"

インポート作業ログのテンプレート

チームで共有する作業ログのひな形です。インポートのたびにこの項目を記録します。

項目 記入例
実施日時 2026-05-27 14:30
担当者 田中
目的 夏季セールに向けた価格一括変更
バックアップファイル名 products_export_20260527_before-price-fix.csv
インポートファイル名 products_import_20260527_after-price-fix.csv
変更商品数 342件
変更列 Variant Price
diff確認者 佐藤(田中以外のメンバー)
インポート後の目視確認結果 10件サンプリング、全て正常

このログがあれば、「先週の金曜に誰が何を変更したか」がすぐに追跡できます。スプレッドシートの一行として管理しても、チャットの定型フォーマットとして投稿しても構いません。チームが継続しやすい形を選んでください。


CSVバックアップは「取っておしまい」ではなく、命名ルール・差分確認・復旧手順の3本をセットで運用することで初めて意味を持ちます。特に複数人で商品管理をしている場合は、インポート宣言やダブルチェックのルールを決めておくことで、データ事故のリスクを大幅に下げられます。まずは次回のCSV更新から、エクスポートファイルを_before付きで保存し、diffを取る習慣を始めてみてください。

相談時に用意するとよい情報

  • 現在管理しているおおよその商品数(数百、数千などで構いません)
  • CSV更新の頻度(週1回、月1回、不定期など)
  • CSV更新を担当している人数
  • 過去にCSVインポートで起きたトラブルの有無と内容
  • 現在使っている共有フォルダやファイル管理の仕組み

機密CSVやスクリーンショットの送付は不要です。上記の情報をお知らせいただければ、チームの規模と更新頻度に合わせたバックアップ運用の具体的な設計をご提案できます。

参考にした公式情報

この記事の内容で困っている方へ

Shopify CSV / 一括編集 まわりの作業整理、小さな自動化、簡易チェックツール化について相談できます。初回相談で機密CSVやスクリーンショットを送る必要はありません。

無料相談する