カテゴリー
EC-CUBE osCommerce

osCommerceの顧客データを移行する実験01

告白すると、俺って映像の仕事やってんですヨ。いや、マジで。

それはさておき、ヒョンなことからosCommerceってECサイトとか構築できるCMSの顧客データを、別のシステムに移しそうな雲行きだったので先に試してみた訳です。ええ。

あ、今回は抜き出した顧客データの加工とか別のDBに吸収とかはしません。その代わりログイン用のパスワード照合する部分をPHPでアレするのと、移行先のシステムでosCommerceと同じアルゴリズムでパスワードを暗号化するトコまでを何回かに分けて書くかもです。
顧客データにある暗号化されたパスワードの複合化なんかはしませんのでヒトツ。

osCommerce自体はチョット古くて、本体の開発進行が止まってる?Zen Cartに吸収された?・・・なんかよく判らないですがそんな感じのモノです。

流れとしては

  1. osCommerceのDBから顧客データをCSVで抜き出す
  2. パスワード照合PHPを書く
  3. パスワード暗号化PHPを書く

みたいな感じです。後はテキトーに料理してやってください的なアレ。

んじゃとりあえずDBにある顧客情報をCSVで吸い出しときます。

今回必要な顧客データはosCommerceのDB内で3つのテーブルに格納されてます。

一つは”address_book”、もう一つは”customers”そして最後に”customers_info”です。”customers”にはログインするための情報が収まってます。

“customers”は顧客の基本的な情報で、”customers_info”にはいつ登録したとか最近のログインはいつだとかの情報、”address_book”は顧客の住所とかが入ってます。

SQLコマンドでもイイけど今時のデキる映像屋はphpMyAdminとかWebminとか使ってクールにデータを抽出するんですよ。ええ。でも文章的にそれは如何なモノかと黒いホムホムが耳元で囁くのでパパッと・・・

$ mysql -u ユーザー名 -p
Enter password: #パスワード応答

mysql> use DB名;

mysql> select * from customers into outfile "/tmp/customers.csv" fields terminated by ',' enclosed by '"';

mysql> select * from customers_info into outfile "/tmp/customers_info.csv" fields terminated by ',' enclosed by '"';

mysql> select * from address_book into outfile "/tmp/address_book.csv" fields terminated by ',' enclosed by '"';

mysql> quit
Bye

これで”/tmp”に”customers.csv”と”customers_info.csv”と”address_book.csv”のcsvファイルが書き出されてるハズなので、上手いコト手元に持ってきてください。

今回はカンマ区切りのダブルクォート括りのcsv出力です。

あ、3つありますが、1つは今回使いませんが一緒に抜き出しておけば後で使えるかなぁ?程度のモノです。後のログイン処理では”customers.csv”だけ、新規登録では”address_book.csv”も使いますが、最終的には移行先システムが使うDBに合わせてテーブルを統合したりフィールド削除してりする前提です。

んで、osCommerceはEUCで日本語扱ってるので移行先のシステムに合わせてテキストエンコードを変更しておくと宜しいでしょう。
今回はUTF-8に変換しました。変換ツールは色々有るのでアレしといてくださw

“customers.csv”は顧客の基本情報でフィールド名は

  • customers_id
  • customers_gender
  • customers_firstname
  • customers_lastname
  • customers_dob
  • customers_email_address
  • customers_default_address_id
  • customers_telephone
  • customers_fax
  • customers_password
  • customers_newsletter

です。まぁ大体フィールドの中身と見比べたら解りますよね?後々出て来る(予定)のログイン処理とかで必要なのは”customers_id”と”customers_email_address”と”customers_password”ぐらいかな?

で、”customers_info.csv”のフィールドが

  • customers_info_id
  • customers_info_date_of_last_logon
  • customers_info_number_of_logons
  • customers_info_date_account_created
  • customers_info_date_account_last_modified
  • global_product_notifications

です。コレも見たら解りますねwまぁ今回は何となく利用できそうなので引っぱってきましたが、顧客の基本情報とパスワードだけでイイ場合は”customers_info.csv”は不要かもしれませんね。

んで最後に”address_book.csv”のフィールド名。

  • customers_id
  • address_book_id
  • entry_gender
  • entry_company
  • entry_firstname
  • entry_lastname
  • entry_street_address
  • entry_suburb
  • entry_postcode
  • entry_city
  • entry_state
  • entry_country_id
  • entry_telephone
  • entry_zone_id

こんな感じ。

とりあえず3つのcsvファイルが手元にあって、任意のテキストエンコードに変換し終わってる状態で、今回はここまでw

次回はログイン処理のPHPだけ。しかもマジでソノ部分だけの予定デス。ええ。