ECCUBE 2.12 PostgreからMySQLへ会員情報を移管する手順

ECCUBE2.12の会員情報を移管する手順になります。また、旧サイトはPostgresSQL、移行先のサイトはMySQLだったため、「PostgresからMySQLに変える作業」と「会員情報を移管する作業」の2つの作業の流れになります。

ECCUBE 2.12 PostgreからMySQLへ会員情報を移管する手順

作成日
2017/03/15
更新日
2018年2月28日

ECCUBE2.12の会員情報を移管する手順になります。ポツポツとECCUBE3の情報やプラグインが出ているなか、仕事でプラグインの関係上ECCUBE2を利用しなくてはならなかったのですが、リニューアルだからと旧サイトのファイルデータはもらえず、移管元となるデータベースと必要最低限の情報のみ渡されました。そして旧サイトのデータベースはPostgreなのに、新サイトのサーバではMySQLだという。特殊なケースになってくると情報も少なく、色々と面倒そうでしたが何とかできそうなのでメモ。とりあえず必要な情報は次の通り。

  1. 旧サイトのデータベースのバックアップデータ(.dumpfile)
  2. 旧サイトの「AUTH MAGIC」(data/config/config.phpに記載)
  3. 旧サイトの「PASSWORD_HASH_ALGOSdata/config/config.phpに記載)

「PostgresからMySQLに変える作業」と「会員情報を移管する作業」の2つの作業の流れになります。会員情報を移管する流れだけを知りたい場合は最初の方は飛ばして大丈夫かと。

【Postgre > MySQL①】phpPgAdminにバックアップデータをインポート

まずは旧サイトのphpPgAdminから吐き出されたdumpfileをPostgreSQLにインポートします。これはあくまでPostgreSQLからMySQLへ移す中間点のために必要な作業なので、新サーバの必要もなくローカルで構築したサーバでも大丈夫だと思いますが、理想はPostgreSQLのバージョンをそろえる方がいいかと思います。今回の場合は新サーバでPostgreが使えない環境だったため他のサーバを利用しました。
この項目は会員情報を移換するだけの方は必要ありません。また、旧サイトも管理下にあって実際に抽出する側の場合は、phpPgAdminからデータをエクスポートする必要があります。

【会員データ移行①】会員情報テーブルをCSV形式でエクスポート

とりあえずphpPgAdminで旧サーバのデータを入れることができたら、次は会員情報のテーブルを抜き出します。顧客データが入っているテーブルは「dtb_customer」です。phpPgAdminの場合は左メニューより「dtb_customer」テーブルを選択し、「エクスポート」からCSV形式でダウンロードします。

【会員データ移行②】会員情報CSVの整形

旧サーバより吐き出されたCSVを整形します。エクセルで開くと文字化けなんかしてしまうことがあるので、Googleスプレッドシートで開きました。無料だしとても便利です。

1)「salt」の値を「NULL」変更

MySQLで見る「NULL」は、Googleスプレッドシートでは「\n」の文字列となって表示されています。
カラム「salt」の値を全て「\n」にしてしまいます。1つの行だけ入れ、角にカーソルを合わせてツタタタターっと伸ばしてしまえば同じ値が入ります。

2)ヘッダー部分(最初の1行)を削除

吐き出されたCSVは最初にカラム名が入っています。「name」とかそういう最初の行です。これを行の削除で消してしまいます。
※Googleスプリットシートでやったからわかりませんが最後に2行空の行が入っていたので消してしまいました。

3)整形したCSVデータを保存

書き出して別名保存しておいた方がいいと思います。あとで利用するかもしれません。

【会員データ移行③】新サイトに同じバージョンでECCUBEをインストール

ここまできたら新サイトにECCUBEをインストールします。バージョンは旧サイトのECCUBEのバージョンとそろえた方がいいと思います。
インストール方法は省略しますが、今回はMySQLにて旧サイトと同じバージョンでECCUBEをインストールしました。

【会員データ移行④】新サイトのphpMyAdminで、旧サイトの整形したCSV(会員テーブル)をインポート

以下はインポートする際に行った設定です。

  • ファイルの文字セット「utf8」
  • インポート済みファイルの書式「LOAD DATAを用いたCSV」
  • フィールド区切り記号「,」
  • フィールド囲み記号「“」
  • ローカルキーワードを使用する「チェック」

【会員データ移行⑤】phpMyAdminで値を変更

ここまでで既に会員データを管理画面から確認できますが、会員データをデータベースに直接インポートした場合、新規会員登録の時にシステムエラーが発生します。理由は何となくですが、ID1として登録ってもう既にID1いるじゃないですか!って感じだと思います。
phpMyAdminで以下を行いました。

  1. 「dtb_customer」テーブルで最後の会員数を確認(※ECCUBE管理画面からの人数と違う場合があります。)
  2. 「dtb_customer_customer_id_sql」に「会員数」を挿入
  3. 「dtb_customer_customer_id_sql」>「操作」で、「AUTO_INCREMENT」の値を「会員数 + 1」にして「実行」

【会員データ移行⑥】config.phpファイルを修正

会員のパスワードは暗号化されてデータベースに挿入されているのですが、新しくECCUBEをインストールした場合はその解読方法も変わってしまうので、このままではせっかく入れ込んだ会員がログインできません。
以下の方法のように、同じキーを入れてあげることでパスワードに対する解釈が旧サイトと同じになりログインできるようになるのですが、今度はインストール時に設定した管理者はログインできなくなるため、1番目の手順は忘れずに必ず行った方がいいと思います。

  1. ECCUBEの管理画面にログイン
  2. 旧サイトのconfig.phpファイル(「data/config/config.php」)にある、「AUTH_MAGIC」と「PASSWORD_HASH_ALGOS」の値をコピー
  3. 新サイトのconfig.phpファイルに、旧サイトの「AUTH_MAGIC」と「PASSWORD_HASH_ALGOS」の値をペースト
  4. 管理画面へ戻り、パスワードを再設定

これで多分大丈夫です。もし不安な場合はログアウトする前に違うブラウザでログインしてみましょう。

まとめ

ECCUBEってややこしいイメージがありましたがやっぱりややこしいと思いました。

  • 山崎 より:

    はじめまして。EC CUBE 2 から EC CUBE 3への会員データ移行の方法を探していて、こちらにたどり着きました。

    EC CUBE 2 のデータベース構造が管理してもらっているシステム会社でカスタマイズされており、会員データ移行プラグインが使用出来ずに困っております。こちらの方法を応用してなんとか出来ないものかと考えています。

    データ移行後に、上記のその後で、何か注意する点や修正する点とうありましたら、教えていただけませんでしょうか?

    お手数をおかけいたしますが、どうぞよろしくお願いいたします。

  • コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Category

Archive