Artikel aus Magento schnell löschen

Wer kennt das nicht? Ein neues System aufgesetzt, Artikeldaten importiert oder aus einer Wawi eingespielt und einiges ausprobiert. Nach den Tests müssen die Artikel wieder entfernt werden.  Bei 10 oder 50 Artikeln kein Problem, doch was ist wenn man 1500 Artikel in Magento hat? Die Löschfunktion innerhalb von Magento ist auch unter 1.8 recht langsam und so können mehrere Minuten bis Stunden beim Löschen “drauf” gehen.

Idealerweise gibt es die Möglichkeit direkt über die Datenbank die Artikel zu entfernen. Hierbei gibt es zwei Lösungen. Die erste Lösung wäre ein truncate der betroffenen Tabellen inkl. auffüllen der Tabellen mit den Standarddaten:

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 `cataloginventory_stock`(`stock_id`,`stock_name`) VALUES (1,'Default');
INSERT  INTO `catalog_product_link_type`(`link_type_id`,`code`) VALUES (1,'relation'),(2,'bundle'),(3,'super'),(4,'up_sell'),(5,'cross_sell');
INSERT  INTO `catalog_product_link_attribute`(`product_link_attribute_id`,`link_type_id`,`product_link_attribute_code`,`data_type`) VALUES (1,2,'qty','decimal'),(2,1,'position','int'),(3,4,'position','int'),(4,5,'position','int'),(6,1,'qty','decimal'),(7,3,'position','int'),(8,3,'qty','decimal');
SET FOREIGN_KEY_CHECKS = 1;

Das Problem bei dieser Lösung kann aber sein, dass es ein Problem mit den indexen gibt. Deswegen kann man auch ein

DELETE FROM catalog_product_entity;

durchführen. Der Vorteil hier ist, dass die zugehörigen Tabellen miteinander verbunden sind, werden die zugehörigen Einträge in den anderen Tabellen auch gelöscht. Sollte man über sehr viele Daten verfügen, kann das aber auch einen phpMyAdmin in die Knie zwingen und man sollte vielleicht in chargen arbeiten, in dem man einfach ein LIMIT = X dem delete Befehl anfügt. Das X sollte dann natürlich durch den Limiter ersetzt werden.

In beiden Fällen ist aber zudem ratsam im media/catalog/product die Verzeichnisse und Dateien zu löschen, da sonst Datenleichen auf dem Server zurück bleiben die schnell viel Speicher fressen können.

Bitte beachten: Es werden nur die Produkte mit den Attribut Values gelöscht – jedoch keine Attribute bzw. Kategorien! Vorher sollte immer ein DB-Backup durchgeführt werden und es sollte nicht in produktiven Livesystemen genutzt werden!


Von | 2017-03-13T10:02:49+00:00 14. Mai 2014|Magento, Programmieren|0 Kommentare

Über den Autor:

Björn Alexander Binder
Seit 1998 bin ich mit dem Ecommerce vertraut und habe zu der Anfangszeit mit Partnern neben einigen Webprojekten mehrere Onlineshops betrieben. Zu Beginn handelte es sich noch um oscommerce basierende Shops. Aufgrund vieler Mängel und fehlenden Features habe ich mich mit anderen oscommerce Usern zusammen getan und wir haben das oscommerce Shopsystem geforkt. Aus diesem Fork wurde später dann das xtcommerce Shopsystem aus dem ich mich direkt in der Anfangszeit aufgrund Zeitmangels zurück gezogen habe. Seit 2013 betreue ich wieder als selbständiger Kunden rund um den Ecommerce Sektor und bin zudem JTL Servicepartner. Für mich ist die persönliche Betreuung und klare Informationspolitik meinen Kunden gegenüber das wichtigste. Nur zufriedene Kunden sind gute Kunden! Bei Fragen rund um JTL, Magento und anderen Onlineshopsystemen bin ich Ihr Ansprechpartner und freue mich auf Ihre Anfrage.

Hinterlassen Sie einen Kommentar