Intereting Posts
Использование cron-менеджера из PHP нажатие на ссылку должно отображать результат на той же странице. Кнопка BACK и REFRESH должна работать нормально Как построить следующие и предыдущие ссылки с php? Статус выхода ssh2_exec в PHP? Использование casperjs и PHP для сохранения данных Вставьте значение флажка в mysql с помощью codeigniter PHP: вопрос о расшифровке Json Декодирование массива JSON объектов в PHP, это обратные косые черты? PHP EOF показывает только один результат из цикла Как вы можете сделать многомерный массив уникальным? Как вставлять твиттер-твиты .. Как поймать изображения с URL-адресов твитов и отображать фактические изображения? Нужно ли использовать автозагрузку PHP для использования папок? Хотите подключиться к серверу iCloud caldav и добавить событие, желательно из PHP Повторяющиеся символы регулярного выражения Php очистка переменных $ _POST

Как мне импортировать продукты в Magento, используя прямое подключение к базе данных

У меня около 50 000 записей для импорта в магазине Magento. Что я уже тестировал: файл составляет около 50 МБ.

  • Разделенные файлы
  • API
  • Классы Magento

Разделение файла не улучшает скорость импорта продуктов. Апи очень медленные. Классы Magento медленны.

Это отлаженный код с использованием классов Magento:

// Build the product $product->setIsMassupdate(true) ->setExcludeUrlRewrite(true) ->setManufacturer($this->addManufacturers(utf8_encode($record[4]))) ->setSku($record[3]) ->setAttributeSetId($this->attribute_set)# 9 is for default ->setTypeId(Mage_Catalog_Model_Product_Type::TYPE_SIMPLE) ->setName(utf8_encode($record[5])) ->setCategoryIds($this->getCategories(array($record[0], $record[1], $record[2]))) # some cat id's, ->setWebsiteIDs(array(1)) # Website id, 1 is default ->setDescription(utf8_encode($record[6])) ->setShortDescription($this->shortText(utf8_encode($record[6]), 150)) ->setPrice($price) # Set some price ->setSpecialPrice($special_price) ->setWeight($record[12]) ->setStatus( Mage_Catalog_Model_Product_Status::STATUS_ENABLED ) ->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH) ->setTaxClassId(2) // default tax class ->setPixmaniaimg($record[10]) ->setStockData(array('is_in_stock' => $inStock, 'qty' => $qty)) ->setCreatedAt(strtotime('now')); $product->save(); $ID = is_numeric($productID) ? $productID : $product->getId(); 

Таким образом, вышеуказанный метод является правильным, но он тратит около 5 часов, чтобы вставить только 2300 записей!

Какие простые вставки SQL, которые я должен выполнить в БД Magento, чтобы добавить новый продукт?

Я настоятельно рекомендую вам избегать написания необработанного SQL любой ценой, вы почти наверняка потратите дни и дни на запись, чтобы сопоставить идентификаторы атрибутов и, вероятно, ошибаетесь. Он также обходит все важные индексирования и другие обновления системы, на которые опирается Magento.

Если скорость ваша проблема, я предлагаю вам рассмотреть uRapidFlow от Unirgy. Обычные заявления об отказе от ответственности применяются, я не имею отношения к Unirgy, но, по моим наблюдениям, качество этой работы превосходно.

HTH, JD

Если вы отключите индексатор во время загрузки, а затем снова включите и запустите его, он должен улучшить время загрузки.

 $indexer = Mage::getSingleton('index/indexer'); $indexer->lockIndexer(); // ... run your processing ... $indexer->unlockIndexer(); // Reindex everything $processes = $indexer->getProcessesCollection(); foreach ($processes as $process) { // echo 'Processing: ' . $process->getIndexerCode() . "n"; $process->reindexEverything(); } 

Очень сложно создавать продукты с использованием необработанных SQL-запросов, поскольку Magento использует шаблон EAV для хранения продуктов.

Иногда я заметил массивные вставки, которые работают, сначала создавая модель шаблона …

 $blankProduct = Mage::getModel('catalog/product'); 

… затем избегайте создания модели для каждой записи …

 $newProduct = clone $blankProduct; $newProduct->setIsMassupdate(true) ... $newProduct->save(); 

Это немного более эффективно, но, вероятно, недостаточно, чтобы получить этот массовый импорт в разумные сроки.