Usuwanie produktów z bazy Magento
Przy każdym wdrożeniu przychodzi taki moment kiedy konieczne jest usunięcie produktów testowych lub takich, które zaimportowały się w sposób niepoprawny. Oczywiście jeżeli ich ilość jest niewielka nie ma problemu możemy zrobić to z panelu administracyjnego, co jednak w przypadku kiedy mamy potrzebę usunięcia ze sklepu kilkudziesięciu tysięcy produktów? Oczywiście możemy spędzić kilka godzin usuwając poszczególne produkty lub też możemy zrobić to poprzez bazę danych.
Jeżeli zastosujemy to drugie rozwiązanie uporamy się z produktami w kilka sekund, jednak należy pamiętać, aby usunąć wszystkie tabele. Magento nie jest prostym systemem, stąd też tabel odpowiedzialnych za same produkty jest ponad trzydzieści. Właściwe oczyszczenie bazy z produktów wymaga wyczyszczenia wszystkich tabel powiązanych z produktami. Poniżej prosta lista komend, które możecie zastosować również w swoich wdrożeniach celem oczyszczenia bazy danych z produktów:
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`(`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');
INSERT INTO `cataloginventory_stock`(`stock_id`,`stock_name`) VALUES (1,'Default');
Należy przy tym pamiętać że dla wersji Magento 1.5 konieczne jest wstawienie do tabeli cataloginventory_stock wpisu stock_id z id równym 1oraz stock_name ustawionym na Default. Miłego korzystania.