ECCUBE3 商品CSV登録について
商品CSV登録拡張プラグイン for EC-CUBE3 プラグイン:https://www.ec-cube.net/products/detail.php?product_id=1395
を使うとダウンロードして、インポートできるようになる。デフォルトのECCUBE3だと、フォーマットが違う等でインポートできない。
このプラグインは、エラーを複数行出してくれる。デフォルトは一つのエラーしか出してくれない。
商品をダウンロードしてインポートする際、ファイルサイズが大きいとエラーになる。20Mib位。これは、ECCUBE3の商品CSV登録の設定ファイルから、制限を書き換える事で上限を緩和できる。しかし、サーバーの問題が出てくる。アップロード制限が掛かったり、サーバーがタイムアウトしてしまうので、php.iniで設定する。しかし、タイムアウトに関しては、ブラックボックスのサーバーが多い模様。調べた所、KDDIのCPIがphpを最も構えるので良いようだ。現在CPIで、アップロードをしているが、多くても5000件ずつくらいだ。
エクセルのCSVファイル編集時の注意点
CSVを構うとエラーが出る場合がある。まず、データを削除する際、デリートボタンを使用しない方が良いようだ。
右クリック>削除で削除しないと、空のデータが入っているのか、エラーになる事が分かった。もしくは、「数式と値のクリア」で削除する。
当初、空白のデータが文字列の頭やしっぽに入っている為。という情報があったのだが、当方はデリートで削除していたことが原因の模様。
フォーマットエラー
フォーマットエラーが出る場合、雛形をダウンロードしてみると良い。雛形の項目が無かったり、多いとエラーになる事を確認した。
プラグインによる影響もあると思う。プラグインを有効にする事で、雛形ファイルの項目が増える場合があると思う。ネットの情報だけで上手くいかないのは、おそらくそれが原因。今、3.0.13と3.0.15の2つインストールしてある。両方の雛形をダウンロードして、相手にそのままインポートすると、両者フォーマットエラーになる。勿論、自分にインポートするとフォーマットエラーとは出ない。「CSVデータがありません」と出る。
両者を比較すると、「送料」という項目の有無が関係していたのだ。送料を追加・削除して相手にインポートすると「CSVデータが存在しません」としっかり表示される。勿論、データを入れればインポートされる。
データが間違っている場合、例えば、商品種別IDが無かったり、商品IDが無かったりした場合、エラー項目が一覧で複数行出てくる。これは、商品CSV登録拡張プラグイン for EC-CUBE3を入れているから。入れてい無いと、たぶん1つずつしか表示されない。
要は、フォーマットエラーは項目(商品ID,公開ステータス等々)が原因で起こっている。そして、フォーマットエラーを直さないと、次のエラーは出てこないようだ。
これで、やっとインポートできる。
追記
商品CSV登録の制限解除
/src/Eccube/Form/Type/Admin/CscImportType.php
ここに、商品CSV登録の制限が記載されている。
new AssertFile(array( 'maxSize' => $app['config']['csv_size'] . 'M', 'maxSizeMessage' => 'CSVファイルは' . $app['config']['csv_size'] . 'M以下でアップロードしてください。', )),
こんな感じに、
'maxSize' => '50' . 'M',
アップロード制限を5Mから50Mに変更する。
で、おそらく、これでアップロードすると、500エラーになるはずだ。
これは、サーバーの設定側によるもので、タイムアウトか、メモリの制限によるものだった。エラーの詳細は、サーバーのログを見て確認する。
ロリポップではログが確認できなかったので、CPIへサイトを移行した。
CPIなら、エラーログも出るし、php.iniを自由に変更できる。但し、タイムアウトの変更はできない。
検証してみると、CPIなら5000件位が限界。ファイルサイズは確認していないので分からない。
他の対策として、エンジニアからデータベースに直接入れる方法を提案された。
php.iniの設定方法
ECCUBE3の管理画面>設定>システム設定
「Ctrl+F」で検索画面を開いて「php.ini」と検索。
そうすると、どこにファイルがあるか分かります。ワードプレスのフォルダのphp.iniを読み込んでいるようでした。
そのファイルをFTPでエディタで開く
「memory_limit」を検索。
「50M」を、変更します。
「8000M」に変更。
memory_limitで500エラーになるのではなく、タイムアウトで500エラーになるまで粘ってもらいます。
今の所、運営からは連絡はないので大丈夫ですが、共用サーバーなのであまり迷惑を掛けると連絡が来るようです。
ひとまず、これで一度に5000件までアップロードできます。今回は20万件まで入れるので、それでも40回はアップロードする必要があります。
初めはデータ量が多いので、大変ですが、在庫の更新だけなら10000件以上はアップロードできるかと思います。






ディスカッション
コメント一覧
まだ、コメントがありません