谷口です。
Zen CartからEC-CUBEにデータ移行するときの注意!でZen CartからEC-CUBEに商品カテゴリデータを移行するときの注意点を書きました。
今回は商品属性のデータを移行するときの注意点を紹介します。
商品属性データに関係するテーブルの対応はZen CartとEC-CUBEでそれぞれ以下のようになっています。
| Zen Cart | EC-CUBE | |
| 属性と商品の関連付け | products_attributes | dtb_products_class |
| 属性の種類 | products_options | dtb_class |
| 属性の値 | products_options_values | dtb_classcategory |
Zen Cartにはさらにproducts_options_types、 products_options_values_to_products_options、 products_attributes_download などがあります。
注意が必要なのは表の青色のテーブル情報の移行時で、主に2点あります。
Zen Cartのproducts_options, products_options_values のID情報は 言語IDと合わせて主キーになっています。
そのため、IDが0 のデータが存在する可能性があります。(実際にデモショップのデータにあります)
一方、DBがMySQLですと、対応するEC-CUBEのテーブルの主キーはauto_increment になっているため、0のデータを入れようとするとSQLエラーになります。(正確にはID=0のデータを入れようとするとID=1になるため、後続のデータでエラーになります。)
これを回避するためにはID全体と他のテーブルの参照しているカラムすべてを付け替える必要があります。。。Zen Cartでは属性のない商品はproducts_attributesデータを持ちませんが、EC-CUBEでは属性のない商品もdtb_products_classにデータを持ちます。そのときはdtb_classcategoryのダミーデータを参照するようになっているのですが。。。もちろんZen Cart のproducts_options_values にはダミーのデータは存在しませんので、ダミーデータを登録するか、EC-CUBEのダミーデータ情報を残す必要があります。
かなり面倒ですよねぇ。。。
こちらも EC-SYNC なら自動で変換処理をいたします。