Home > magento, technical notes > Magento Notes — Cleanly delete ALL products from your Magento database

Magento Notes — Cleanly delete ALL products from your Magento database

March 12th, 2009

Having been working on a Magento web site for an auto-parts manufacturer, so you can easily imagine how many SKUs I have to deal with in the database…THOUSANDS!!  I have been struggling with the import process that comes with Magento…biggest lingering problem is that I can’t get the import service to work on production server even though it works perfectly fine on my local laptop.

While testng the importing process (meaning continously importing and reimporting), I also find that there isn’t an easy way to remove data cleanly from the database..so did some googling and found the following thread on Magento web site here. The short version is to go into mysql admin, for me it’s phpmyadmin, and run the following sql script:

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’);

Someone suggested to just run “TRUNCATE TABLE `catalog_product_entity`”, but that appears to be an incomplete solution that would leave too much orphaned data behind.

Another script below can be used to wipe out all categories:

TRUNCATE TABLE `catalog_category_entity`;
TRUNCATE TABLE `catalog_category_entity_datetime`;
TRUNCATE TABLE `catalog_category_entity_decimal`;
TRUNCATE TABLE `catalog_category_entity_int`;
TRUNCATE TABLE `catalog_category_entity_text`;
TRUNCATE TABLE `catalog_category_entity_varchar`;
TRUNCATE TABLE `catalog_category_product`;
TRUNCATE TABLE `catalog_category_product_index`;

insert  into `catalog_category_entity`(`entity_id`,`entity_type_id`,`attribute_set_id`,`parent_id`,`created_at`,`updated_at`,`path`,`position`,`level`,`children_count`) values (1,3,0,0,‘0000-00-00 00:00:00′,‘2009-02-20 00:25:34′,‘1′,1,0,1),(2,3,3,0,‘2009-02-20 00:25:34′,‘2009-02-20 00:25:34′,‘1/2′,1,1,0);
insert  into `catalog_category_entity_int`(`value_id`,`entity_type_id`,`attribute_id`,`store_id`,`entity_id`,`value`) values (1,3,32,0,2,1),(2,3,32,1,2,1);
insert  into `catalog_category_entity_varchar`(`value_id`,`entity_type_id`,`attribute_id`,`store_id`,`entity_id`,`value`) values (1,3,31,0,1,‘Root Catalog’),(2,3,33,0,1,‘root-catalog’),(3,3,31,0,2,‘Default Category’),(4,3,39,0,2,‘PRODUCTS’),(5,3,33,0,2,‘default-category’);

Bookmark and Share


magento, technical notes , ,

  1. Anthony James Bruno
    April 1st, 2009 at 07:13 | #1

    What Version of Magento is this supported for?

  2. April 1st, 2009 at 07:19 | #2

    I had tried this on 1.2.1, and it worked fine for me. Hope this helps.

  3. August 13th, 2009 at 08:12 | #3

    Does it work for 1.3.2.3 ?

  4. September 14th, 2009 at 20:55 | #4

    hello! can guide me plzz how can i insert any value in database in magento? i am customizing newsletter module but just stuck on this point i am new to magento working on my first magento site. plzz help me and guide me how can i insert any value in database in magento.

    Regards,

  5. April 5th, 2010 at 19:54 | #5

    This is great, works nicely on 1.4 - just had to fix some syntax after copy/paste but it works nicely.

  1. No trackbacks yet.