Fast bulk product status change with Magento

If you have a large catalogue, using some standard features are simply impractical to use. Recently, we needed to disable an entire range of products based on its SKU - via the backend, bulk status changing 5000 products will take hours, but fortunately SQL is a spot more lightweight.

In the code below (to be run via command line MySQL or phpMyAdmin), just replace %SKU% with your SKU identifier and use % as a wildcard or _ as a single character wildcard.

This will obviously apply to any other attribute, so just change the code as necessary.

enabled = 1
disabled = 2

UPDATE catalog_product_entity_int cpei, catalog_product_entity cpe
SET cpei.value = "2"
WHERE cpe.entity_id = cpei.entity_id
AND cpe.sku LIKE '%SKU%'
AND cpei.attribute_id = 273


Disable by category

Another resource for disabling by category is

UPDATE catalog_product_entity_int cpei, catalog_product_entity cpe
SET value = '2'
WHERE cpe.entity_id = cpei.entity_id
AND attribute_id = "80"
AND cpe.category_ids = "%35%"
AND (cpe.category_ids LIKE "35,%" OR cpe.category_ids LIKE "%,35,%")

Remember to rebuild the category indexes

After the MySQL above has run - you'll need to let Magento take the reigns back a little to update the category indexes, this is quite straightforward, but a little time consuming.

Login to your admin and go to System > Cache Management, the select Rebuild Catalog Index