Как удалить все товары из большого каталога?

8

Я работаю над импортом ~ 40 тыс. Товаров в Magento. Мне нужен простой способ удалить все продукты между тестами, но я пытаюсь сделать это из ошибок администратора, прежде чем делать это очень далеко.

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

Можно ли стереть все товары без использования админа?

Ryre
источник
1
Если это только для тестирования, может быть простой способ: сделать резервную копию вашей базы данных перед импортом и восстановить ее после.
Арно Л

Ответы:

4

Если вы импортируете через, Mage_ImportExportесть также опция «УДАЛИТЬ». Если вы примените это к одному и тому же файлу импорта, все SKU, содержащиеся в этом файле, будут удалены.

В коде это ->setBehavior(Mage_ImportExport_Model_Import::BEHAVIOR_DELETE);

Вы по-прежнему можете обрезать таблицы конкретных продуктов с помощью SQL - но, конечно, вам необходимо разрешить все зависимости, а также обрезать эти таблицы.

Или: создайте «чистый» дамп базы данных перед импортом и применяйте этот дамп перед каждым тестом.

Alex
источник
Спасибо. Каталог слишком велик, чтобы использовать стандартные инструменты импорта Mage, поэтому мы используем сторонний модуль. Я думаю, что создание чистого дампа БД, из которого я могу восстановить, - мой лучший вариант.
Ryre
Какой модуль? Может быть, у этого также есть опция удаления? Может, она все еще Mage_ImportExportоснована?
Алекс
Это uRapidflow, и я нигде не нашел опцию удаления.
Ryre
Если у вас есть Pro, то проверьте unirgy.com/wiki/urapidflow/fixed_row_format#cpcatalog_product
Петар Джамбазов
7

Вы можете удалить все продукты, используя Direct Sql.

Пожалуйста, сделайте резервную копию вашей базы данных и выполните следующие SQL-запросы.

Сбросить все таблицы продуктов. Осторожно, приведенный ниже скрипт удалит ВСЕ данные о вашем продукте, поэтому делайте это осторожно.

`SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE `catalog_product_bundle_option`;
TRUNCATE TABLE `catalog_product_bundle_option_value`;
TRUNCATE TABLE `catalog_product_bundle_selection`;
TRUNCATE TABLE `catalog_product_entity_datetime`;
TRUNCATE TABLE `catalog_product_entity_decimal`;
TRUNCATE TABLE `catalog_product_entity_gallery`;
TRUNCATE TABLE `catalog_product_entity_int`;
TRUNCATE TABLE `catalog_product_entity_media_gallery`;
TRUNCATE TABLE `catalog_product_entity_media_gallery_value`;
TRUNCATE TABLE `catalog_product_entity_text`;
TRUNCATE TABLE `catalog_product_entity_tier_price`;
TRUNCATE TABLE `catalog_product_entity_varchar`;
TRUNCATE TABLE `catalog_product_link`;
TRUNCATE TABLE `catalog_product_link_attribute`;
TRUNCATE TABLE `catalog_product_link_attribute_decimal`;
TRUNCATE TABLE `catalog_product_link_attribute_int`;
TRUNCATE TABLE `catalog_product_link_attribute_varchar`;
TRUNCATE TABLE `catalog_product_link_type`;
TRUNCATE TABLE `catalog_product_option`;
TRUNCATE TABLE `catalog_product_option_price`;
TRUNCATE TABLE `catalog_product_option_title`;
TRUNCATE TABLE `catalog_product_option_type_price`;
TRUNCATE TABLE `catalog_product_option_type_title`;
TRUNCATE TABLE `catalog_product_option_type_value`;
TRUNCATE TABLE `catalog_product_super_attribute`;
TRUNCATE TABLE `catalog_product_super_attribute_label`;
TRUNCATE TABLE `catalog_product_super_attribute_pricing`;
TRUNCATE TABLE `catalog_product_super_link`;
TRUNCATE TABLE `catalog_product_enabled_index`;
TRUNCATE TABLE `catalog_product_website`;
TRUNCATE TABLE `catalog_product_entity`;
TRUNCATE TABLE `cataloginventory_stock`;
TRUNCATE TABLE `cataloginventory_stock_item`;
TRUNCATE TABLE `cataloginventory_stock_status`;
INSERT INTO `catalog_product_link_type` VALUES(1, 'relation');
INSERT INTO `catalog_product_link_type` VALUES(3, 'super');
INSERT INTO `catalog_product_link_type` VALUES(4, 'up_sell');
INSERT INTO `catalog_product_link_type` VALUES(5, 'cross_sell');
INSERT INTO `catalog_product_link_attribute` VALUES(1, 1, 'position', 'int');
INSERT INTO `catalog_product_link_attribute` VALUES(2, 3, 'position', 'int');
INSERT INTO `catalog_product_link_attribute` VALUES(3, 3, 'qty', 'decimal');
INSERT INTO `catalog_product_link_attribute` VALUES(4, 4, 'position', 'int');
INSERT INTO `catalog_product_link_attribute` VALUES(5, 5, 'position', 'int');
INSERT INTO `cataloginventory_stock` VALUES(1, 'Default');
SET FOREIGN_KEY_CHECKS = 1;`

Удалить количество товаров из категории в конце

`SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE `catalog_category_product`;
TRUNCATE TABLE `catalog_category_product_index`;
SET FOREIGN_KEY_CHECKS = 1;`

Удалите бестселлер и большинство продуктов на панели инструментов

`SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE `report_compared_product_index`;
TRUNCATE TABLE `report_viewed_product_aggregated_daily`;
TRUNCATE TABLE `report_viewed_product_aggregated_monthly`;
TRUNCATE TABLE `report_viewed_product_aggregated_yearly`;
TRUNCATE TABLE `report_viewed_product_index`;
TRUNCATE TABLE `sales_bestsellers_aggregated_daily`;
TRUNCATE TABLE `sales_bestsellers_aggregated_monthly`;
TRUNCATE TABLE `sales_bestsellers_aggregated_yearly`;
SET FOREIGN_KEY_CHECKS = 1;`

Флеш все плоские таблицы продуктов

`SET FOREIGN_KEY_CHECKS = 0;
DELETE FROM catalog_product_flat_1;
DELETE FROM catalog_product_flat_2;
DELETE FROM catalog_product_flat_3;
DELETE FROM catalog_product_flat_4;
DELETE FROM catalog_product_flat_5;
SET FOREIGN_KEY_CHECKS = 1;`

Удалить обзор и рейтинг товаров

`SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE table `rating_option_vote`; 
TRUNCATE table `rating_option_vote_aggregated`;
TRUNCATE table `review`; 
TRUNCATE table `review_detail`; 
TRUNCATE table `review_entity_summary`; 
TRUNCATE table `review_store`;
SET FOREIGN_KEY_CHECKS = 1;`

Для предприятия смените следующие таблицы

`SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE `catalog_category_flat_cl`;
TRUNCATE TABLE `catalog_category_product_cat_cl`;
TRUNCATE TABLE `catalog_category_product_index_cl`;
TRUNCATE TABLE `catalog_product_flat_cl`;
TRUNCATE TABLE `catalog_product_index_price_cl`;
TRUNCATE TABLE `cataloginventory_stock_status_cl`;
TRUNCATE TABLE `catalogsearch_fulltext_cl`;
SET FOREIGN_KEY_CHECKS = 1;`
Киньялкумар Праджапати
источник
Стоит отметить, что если вы урезали свои продукты, разумно запустить индексатор. Особенно, если вы используете Solr. Также для EE я обнаружил, что следующую таблицу тоже можно очистить: enterprise_catalog_product_rewriteИ для CE и EE:catalogsearch_query catalog_product_entity_url_key
PanPipes
идеальный ответ с объяснением +1 :) !!!
SagarPPanchal
3

Вы смотрели на Магми ? Один из его «продвинутых» плагинов - это «Чистый каталог», который очень быстрый и даже сбрасывает идентификатор в 1.

Магми на SourceForge

andyjv
источник