Magentoで日本語データをインポートしてみた

(2011年6月17日 追記あり)

MagentoをはじめとするECシステムを導入しようというお店は、ほとんどが、それまでに楽天とかカラーミーショップとかのECサービスを使用していると思います。
すると、当然ながら、これまでの顧客データをインポートしたいというニーズがあるわけです。

データインポートと言うと、たいていはCSVファイルを介して行いますよね?
このCSVファイル、何で作成しますか?

Web屋がやるのなら、高機能のテキストエディタがあればなんとかなります。
でも、クライアントにお願いするとなると、そう簡単にはいきません。
CSVをダブルクリックすると、普通はどんなアプリケーションが開くでしょうか?

Excelですよね。

では、MagentoからエクスポートしたCSVをExcelで開くとどうなるでしょうか?
はい、
文字化けしてしまうのです!

理由は簡単。Magentoから出力されたCSVの文字コードがUTF-8だからです。

マイクロソフトサポートオンラインにも、はっきり書いてあります。仕様だから仕方ありません。
[XL2002] UTF-8 形式のテキスト ファイルが文字化けする

もちろん、解決法は、いくつもあります。

  • 拡張子を.txt にする。(Excelで開くときにテキストウィザードが開いて、文字コードが選択できます)
  • UTF-16で保存しなおす。
  • 外部データの読み込みを使う。
  • OpenOfficeを使う。

いずれも、慣れた人には難しいことではありませんが、普通にパソコンを事務作業で使っているクライアントの担当者にやらせようとすると、Excelの操作以前に教えなければいけない用語が多すぎて、意外にハードルが高いのです。

しかし、Magentoなら、そんな心配は不要です。
なぜなら、「エクセルXML」をサポートしているからです。
Excelは、不思議なことに、UTF-8のXMLなら文字化けしません。

流れはこんな感じになります。
※インポート/エクスポートは、Customersメニューではなく、SystemメニューのImport/Exportを使用してください。

サンプルのXMLファイルを取得する

仮の顧客データを登録し、まずはエクスポートします。

プロファイル「Export Customers」を選択します。
デフォルトから変更するのは、データフォーマットを、MS Excel XMLにすることくらいです。
あと、「Original Magento attribute names in first row:」は、必ず、Yes にします。

プロファイルを変更したら、必ず、保存してからエクスポートしてください。

Excelで顧客データを作成

サンプルのXMLをExcelで開きます。
関連付けされていなければ、ドラッグ&ドロップでも開きます。
開く際に警告が出ることがありますが、たいていは無視して開くことができます。
開いたら、普通にExcelのデータになっています。

このXMLをベースに顧客データを作成します。

1行目の項目名は読み込みの際に必要なので、削除したり変更したりしないでください。

項目名があれば、列の順序が違っても問題ありません。
不要な列は削除してもかまいません。

ただし、必須項目が空欄だと、読み込みがスキップされてしまいます。
例えば、請求先の郵便番号が抜けていると、アカウントだけインポートされ、請求先住所は丸ごとスキップされてしまいます。
郵便番号が抜けていることは、よくあることだと思いますが、マイクロソフトのサイトで、住所から郵便番号に変換してくれるExcelアドオンと辞書が入手できますので、活用してください。

なお、パスワードは、MD5ハッシュ変換を行う必要があります。

作成したら、不要な列やワークシートを削除して、XMLスプレッドシート形式で書き出します。
※XML形式ではありませんので注意してください。

エクセルXMLをインポート

作成したXMLスプレッドシートをMagentoにインポートします。
インポートの際は、プロファイル「Import Customers」を使用します。

デフォルトからは、下記を変更します。

  • Number of records:を、顧客データ数より大きな値にしておく
  • データフォーマットを、MS Excel XMLにする
  • 「Original Magento attribute names in first row:」は、必ず、Yes に

また、XAMPPなどWindows系のサーバーの場合は、Data transfer:は「Interactive」にします。
パスの記号が合わないので、「Local/Remote Server」ではうまく行きません。
Unix系のサーバーなら、どちらでも問題ありません。

「Interactive」を選んだ場合は、[Upload File]タブから、XMLファイルをアップロードします。

アップロードしたら、一度プロファイルを保存します。
次に、[Run Profile]タブを開き、ドロップダウンメニューから、先ほどアップロードしたファイルを選択します。
[Run Profile in Popup]ボタンをクリックし、取り込みが正常に終了したら、インポート完了です。

取り込めたら、必ず顧客データを確認してください。

日本語化している際の注意事項

「PepMaq Japan Package14」を使用して日本語化している場合など、Region(都道府県)を日本語にしている場合は、注意が必要です。
データベース上で英語表記にしているときは、XML上も英語にしておく必要があるからです。
XML上が日本語のままでは、すべての都道府県が「北海道」になってしまいます。

データベースの内容が確認できるなら、次の2つのテーブルを確認してください。

directory_country_region_name
directory_country_region

「region_id」の値で英語表記と日本語表記の対応がわかります。

「PepMaq Japan Package14」を使用している場合は、

magento/app/code/local/PepMaq/Japan/Region/sql/japanregion_setup/mysql4-install-0.1.0.php

を開いても確認できます。

これらを基に、ExcelのVLOOKUP関数などを駆使して、都道府県を英語表記にしてからインポートしてください。



ここまで書いていて気づきましたが、パスワードのMD5変換が必要な時点で、クライアントの担当者にお願いする話ではありませんね・・・

コメントを残す

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