ホーム > システム > Web Shop 開発日誌 EC Cubeに顧客データをインポート

Web Shop 開発日誌 EC Cubeに顧客データをインポート

EC Cubeには、商品マスターは外部ファイルからのインポート機能があるのですが、顧客データのインポート機能はありません。

完全にゼロスタートで立ち上げるならこれで良いのですが、他のツールから移行であるとか、新しくWeb Shopを立ち上げるにしても、既存の顧客リストがデータ化されている場合で、あらかじめ仮登録しておきたいと言った事がある場合にたちまち困りますが、今回はこれをインポートして使う方法を記しておきます。

顧客データのインポートは、当社の場合は phpMyAdmin を使用して、MySQLのデータベースにダイレクトに書き込む方法を採りました。

ちなみに、顧客データの実態は、MySQL の dtb_customer テーブルです。

このやり方での注意点は下記の通り。

1.dtb_customerテーブルの構造をよく見る。(特にNULL許可・非許可、データ型、デフォルト値)

2.マスターを参照している部分は、マスターを参照してデータに整合性を持たせるようにする。
(フィールド名で言うと、pref、sex、job、reminder辺り)
マスターに無い値が入らないように仮で入れておく。

3.パスワードは、/data/mtb_constants_init.phpに書かれている、AUTH_MAGIC値が必要で、
Password:AUTH_MAGIC」と言う文字列に整形した物を sha1 で暗号化。

4.secret_idは、適当な文字列をsha1で暗号化して埋めておく。

5.CSVファイルはutf-8に変換してからインポートする。

6.MS-Officeを使う場合のCSV設定はカンマ区切り、テキスト区切り記号無しで。

具体的なインポート手順ですが、当社の場合はsha1暗号化がMS-Access上で生成するとどうしても計算値が合わなかったので、MySQLのデータベース上で暗号化してから再度Accessにフィードバックして、再度正式なデータをdtb_customerに取り込むと言う少々回りくどいやり方にしました。
以下箇条書きで手順を示します。

1.Accessで適当なデータIDを振っておき、データIDと仮パスワードのみのデータを生成し、MySQLに作業用のテーブルを作ってインポートする。
作業用テーブル名は、temptabelとし、構造はDataID,Pass,NewPassの3フィールドで構成。

2.phpMyAdmin上で、SQLを実行

UPDATE temptable SET NewPass=sha1(Pass);

3.phpMyAdminから、CSV形式でエクスポートし、Accessに取り込み&作業テーブル削除。

4.AccessでDataIDで元データと結合し、dtb_customerに合う様に整形する。secret_idだけはAccess上で生成しました。

5.整形したデータを再度CSVでdtb_customerにインポートする。

6.エラーが無ければ成功。

当社の場合、最後のデータインポート時に、S-JISで取り込みしてると途中でフィールド数が合わないと言うエラーが出ましたが、utf-8に変換してからインポートすると、うまく行きました。

もしエラーが出た場合、dtb_customerのデータを一旦全削除した方がいいのですが、phpMyAdminでチマチマやってると、何千件もデータがあると結構大変なんで、SQLでdeleteした方が賢いです。

1~3は、あらかじめdtb_customerに生パス入れるフィールド作っておいて、正規のパスワード欄にUpdateしても良さそうですが、元のテーブルはあんまり触りたくなかったので、敢えて遠回りで作業しました。

まぁ・・・何かと面倒です。このやり方も普段SQLとか全く触らない人には敷居が高そう。

やっぱり、標準でインポート機能実装してくれる方がいいですね。

カテゴリー: システム タグ:
  1. コメントはまだありません。
  1. トラックバックはまだありません。