OpenClawデータ移行ガイド|既存システムからの安全な移行手順
OpenClawデータ移行 3つの方法と選び方
既存システムからOpenClawへのデータ移行には、主に3つの方法があります。データ量・技術リソース・許容ダウンタイムによって最適な方式が異なります。まず全体像を把握した上で、自社に合った方式を選択してください。
| 移行方式 | 推奨規模 | ダウンタイム | 技術難易度 | 所要期間目安 |
|---|---|---|---|---|
| CSVインポート | 小規模(〜10万件) | 不要 | 低 | 1〜3日 |
| API連携 | 中規模(10万〜100万件) | 不要 | 中 | 1〜2週間 |
| DB直接移行 | 大規模(100万件〜) | 数時間必要 | 高 | 3〜5日 |
迷ったらまずCSVインポートで小規模なテスト移行を実施してください。データ構造の癖や文字コードの問題が早期に発見でき、本番移行のリスクを大幅に低減できます。
移行前の共通準備
どの方式を選択するにしても、以下の準備は移行開始前に必ず完了させてください。
- フルバックアップの取得:移行元・移行先の両方のバックアップを取得する
- テスト環境の用意:本番ではなく、まずテスト環境でリハーサルを実施する
- データマッピング表の作成:移行元カラムと移行先カラムの対応関係を文書化する
- ロールバック手順の確認:移行失敗時に即座に元の状態に戻せる手順を確立する
OpenClawデータ移行 CSVインポートの手順と注意点
CSVインポートは最もシンプルな移行方法です。技術的な難易度が低く、ダウンタイムなしで実施できるため、小規模データや初めてデータ移行を行うチームに最適です。
CSVファイルの準備
OpenClawが受け付けるCSV形式に合わせてデータを整形します。以下の点に注意してください。
- 文字コードはUTF-8(BOMなし)必須:Shift-JISやEUC-JPは文字化けの原因になります
- ヘッダー行を必ず含める:1行目をカラム名行として用意する
- 日付フォーマットの統一:YYYY-MM-DD形式で記述する(例:2026-03-05)
- NULL値の扱い:空文字とNULLを区別してインポート設定を確認する
- 特殊文字のエスケープ:カンマ・ダブルクォートを含む値はダブルクォートで囲む
Excelでデータを編集してCSV保存すると、自動的にShift-JISになることがあります。必ずVS CodeやSublime Textなどのテキストエディタで文字コードを確認してから移行を開始してください。
カラムマッピングの設定
移行元のカラム名がOpenClawの受け入れカラム名と異なる場合は、マッピング設定を行います。OpenClawの管理画面でCSVインポート時にドラッグ&ドロップでマッピングを設定できます。
- 必須カラムがすべてマッピングされているか確認する
- データ型の一致を確認する(文字列→整数への変換が必要な場合は事前変換)
- マッピング設定はテンプレートとして保存し、次回以降の移行で再利用する
バリデーションと差し込みモード
インポート実行前に必ずバリデーションモードで事前チェックを実施します。OpenClawでは「ドライラン」機能を使うと、実際にデータを書き込まずにエラーの有無だけを確認できます。
- ドライラン:実データ書き込みなしでバリデーションのみ実行
- 追記モード:既存データを保持したまま新規データのみ追加
- 上書きモード:同一キーのデータを最新のCSVデータで更新
- 全置換モード:既存データを削除してCSVデータで全置換(要注意)
OpenClawデータ移行 API連携による段階的移行
API連携による移行は、サービスを稼働させたまま段階的にデータを同期できる方式です。移行中も既存システムを使い続けられるため、ユーザーへの影響を最小限に抑えられます。
REST APIを使った差分同期
OpenClawが提供するREST APIを使って、移行元から移行先へデータを段階的に転送します。基本的な流れは以下の通りです。
- 初回全件転送:全データをAPIで一括送信(バッチ処理)
- 差分同期:更新日時フィールドを使って変更分のみを定期同期
- カットオーバー:差分が十分小さくなった段階でシステムを切り替える
バッチサイズの考え方
APIで大量データを転送する場合は、バッチサイズを適切に設定することがパフォーマンスのカギです。
- 推奨バッチサイズ:100〜500件/リクエスト(OpenClawのAPIレート制限を確認)
- リクエスト間隔:1秒以上空けてレート制限を回避する
- 並列リクエスト数:最大3〜5スレッドを目安に調整する
- リトライロジック:429(Too Many Requests)受信時は指数バックオフで再試行
API連携の実装には、Apache NiFiやAirbyteなどのETLツールを使うとコードを書かずに設定だけで同期パイプラインを構築できます。エンジニアリソースが限られているチームに特に有効です。
エラーハンドリングと再実行設計
API移行ではネットワーク障害や一時的なサーバーエラーが発生します。以下のエラーハンドリングを必ず実装してください。
- エラーログの記録:失敗したレコードのIDとエラー内容をCSVで保存する
- 冪等性の確保:同じデータを2回送っても重複が発生しない設計にする
- チェックポイント保存:処理済みのオフセットを記録し、中断後に再開できる設計にする
- 失敗分の再実行:エラーログをもとに失敗レコードのみを再送できる仕組みを用意する
OpenClawデータ移行 データベース直接移行(上級者向け)
DB直接移行はサーバー間でデータベースダンプを転送する方式です。100万件を超える大規模データを短時間で移行する場合に有効ですが、技術的な難易度が高く、メンテナンス時間の確保が必要です。
DB直接移行は誤操作でデータが失われるリスクがあります。必ずバックアップを取得し、テスト環境でリハーサルを完了させてから本番作業に臨んでください。
mysqldump / pg_dumpによるエクスポート
MySQLの場合はmysqldump、PostgreSQLの場合はpg_dumpを使ってデータをエクスポートします。トランザクション整合性を保つオプションを必ず指定してください。
- MySQL:
mysqldump --single-transaction --quick -u user -p dbname > dump.sql - PostgreSQL:
pg_dump --format=custom --no-acl --no-owner dbname > dump.pgdump - 圧縮転送:大容量の場合はgzip圧縮してから転送する(
| gzip > dump.sql.gz) - 転送の暗号化:SCPまたはSSFTP経由で転送し、平文転送は避ける
スキーマ変換と外部キー制約の一時解除
移行元と移行先でデータベース構造(スキーマ)が異なる場合は、変換作業が必要です。
- スキーママッピング:テーブル名・カラム名の差異をSQLのAS句で吸収する
- データ型変換:VARCHAR→TEXT、INT→BIGINTなど型の変換が必要な場合はSQLで変換
- 外部キー制約の一時解除:MySQL:
SET FOREIGN_KEY_CHECKS=0;、PostgreSQL:SET session_replication_role = replica; - 制約の再有効化:インポート完了後に必ず制約を元に戻す
整合性チェック
インポート完了後は以下のSQLでデータの整合性を確認します。
- 移行元と移行先のレコード数が一致しているかCOUNT(*)で確認
- 外部キー参照先が存在しないレコード(孤立レコード)がないかLEFT JOINで検出
- NULLが入るべきでないカラムにNULLが存在しないかIS NULLで確認
- 数値カラムの合計値(SUM)が移行前後で一致しているか確認
OpenClawデータ移行 移行後の検証チェックリスト
データ移行は「転送完了」がゴールではありません。移行後の検証が最も重要なフェーズです。以下のチェックリストを用いて、データ品質を確認してください。
レコード数の照合
- 全テーブルのレコード数が移行元と移行先で一致しているか確認
- 論理削除済みレコード(deleted_atがNULLでないもの)の扱いを確認
- バッチ移行で分割した場合、各バッチの件数の合計が全件数と一致するか確認
サンプルデータの目視確認
- 各テーブルから10〜20件をランダムサンプリングして移行元と照合する
- 日本語文字列が文字化けしていないか確認する
- 日付・金額・IDなどの数値データが正確に移行されているか確認する
- HTMLや特殊文字を含むテキストフィールドが正しくエスケープされているか確認する
参照整合性チェック
- 外部キー制約を再有効化した後にエラーが発生しないか確認
- 親レコードなしに存在する子レコード(孤立データ)がないか確認
- 多対多の中間テーブルの参照が正しく保持されているか確認
パフォーマンステスト
- 移行後のクエリ実行時間が許容範囲内かEXPLAINで確認
- インデックスが正しく作成されているか確認(SHOW INDEX FROM table_name)
- 本番相当の負荷をかけてレスポンスタイムを計測する
大規模データの照合には、pt-table-checksum(Percona Toolkit)を使うと移行元・移行先のデータ差分を自動で検出できます。手動照合の工数を大幅に削減できます。
まとめ
OpenClawへのデータ移行は、規模に応じた方式の選択が成否を分けます。小規模データはCSVインポート、中規模はAPI連携、大規模はDB直接移行を選択してください。
- 小規模(〜10万件):CSVインポートでシンプルに移行。ダウンタイム不要
- 中規模(10万〜100万件):API連携で差分同期。段階的な移行でリスク分散
- 大規模(100万件〜):DB直接移行で短時間に一括転送。メンテナンス時間の確保が必要
どの方式でもテスト環境でのリハーサルは必須です。本番移行前にテスト環境で一連の手順を通しで実施し、問題点を洗い出しておいてください。移行後は必ずチェックリストに沿って検証を行い、データ品質を確認してから本番稼働に切り替えてください。
移行に関するセキュリティ面の考慮についてはOpenClawのセキュリティ設計ガイドも併せてご参照ください。
よくある質問
iconv -f SJIS -t UTF-8 input.csv > output.csv)でも変換できます。mysqldump --single-transactionでスナップショットを取得し、失敗時はリストアで即復旧できます。PostgreSQLではpg_restoreを使用します。ロールバック手順は事前に必ずテスト環境で確認しておいてください。掲載企業