Wie lösche ich alle Produkte aus einem großen Katalog?

8

Ich arbeite daran, ~ 40k Produkte in Magento zu importieren. Ich brauche eine einfache Möglichkeit, alle Produkte zwischen den Tests zu entfernen, aber ich versuche dies aus den Administratorfehlern heraus zu tun, bevor ich es sehr weit mache.

Wenn ich versuche, die Tabellen direkt abzuschneiden, stoße ich auf viele Abhängigkeiten, die die Aktionen verhindern.

Ist es möglich, alle Produkte ohne Verwendung des Administrators zu löschen?

Ryre
quelle
1
Wenn es nur zum Testen ist, ist der einfache Weg möglicherweise: Sichern Sie Ihre Datenbank vor dem Import und stellen Sie sie danach wieder her.
Arnaud L

Antworten:

4

Wenn Sie über importieren, Mage_ImportExportgibt es auch eine Option "LÖSCHEN". Wenn Sie dies auf dieselbe Importdatei anwenden, werden alle in dieser Datei enthaltenen SKUs gelöscht.

Im Code ist dies ->setBehavior(Mage_ImportExport_Model_Import::BEHAVIOR_DELETE);

Sie können die spezifischen Produkttabellen weiterhin über SQL abschneiden - aber natürlich müssen Sie alle Abhängigkeiten auflösen und diese Tabellen auch abschneiden.

Oder: Erstellen Sie vor dem Import einen "sauberen" Datenbankspeicherauszug und wenden Sie diesen Speicherauszug vor jedem Test an.

Alex
quelle
Vielen Dank. Der Katalog ist zu groß, um die Standardimporttools von Mage zu verwenden. Daher verwenden wir ein Modul eines Drittanbieters. Ich denke, das Erstellen eines sauberen DB-Dumps, von dem ich wiederherstellen kann, ist meine beste Option.
Ryre
Welches Modul? Vielleicht hat dieser auch eine Löschoption? Vielleicht basiert er noch Mage_ImportExport?
Alex
Es ist uRapidflow und ich habe nirgendwo eine Löschoption gefunden.
Ryre
Wenn Sie Pro haben, dann überprüfen Sie unirgy.com/wiki/urapidflow/fixed_row_format#cpcatalog_product
Petar Dzhambazov
7

Sie können das gesamte Produkt mit Direct SQL löschen.

Bitte sichern Sie Ihre Datenbank und führen Sie die folgenden SQL-Abfragen aus.

Setzen Sie alle Produkttabellen zurück. Beachten Sie, dass das folgende Skript ALLE Ihre Produktdaten löscht. Gehen Sie daher vorsichtig vor.

`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;`

Entfernen Sie die Produktanzahl aus der Kategorie im Backend

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

Entfernen Sie den Bestseller und die meisten Ansichtsprodukte in Dashboards

`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;`

Spülen Sie den gesamten flachen Produkttisch

`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;`

Entfernen Sie die Bewertung und Bewertung von Produkten

`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;`

Für Enterprise Flush die folgenden Tabellen

`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;`
Kinjalkumar Prajapati
quelle
Es ist erwähnenswert, dass es ratsam ist, den Indexer auszuführen, wenn Sie Ihre Produkte abgeschnitten haben. Besonders wenn Sie Solr verwenden. Auch für EE fand ich, dass die folgende Tabelle auch gelöscht werden konnte: enterprise_catalog_product_rewriteUND für CE und EE:catalogsearch_query catalog_product_entity_url_key
PanPipes
perfekte Antwort mit Erklärung +1 :) !!!
SagarPPanchal