Comment supprimer tous les produits d'un grand catalogue?

8

Je travaille sur l'importation de ~ 40 000 produits dans Magento. J'ai besoin d'un moyen facile de supprimer tous les produits entre les tests, mais j'essaie de le faire à partir des erreurs d'administration avant de faire très loin.

Si j'essaie de tronquer directement la table, je rencontre beaucoup de dépendances qui empêchent les actions.

Est-il possible d'effacer tous les produits sans utiliser l'administrateur?

Ryre
la source
1
S'il ne s'agit que de tests, le moyen le plus simple est de sauvegarder votre base de données avant l'importation et de la restaurer après.
Arnaud L

Réponses:

4

Si vous importez via, Mage_ImportExportil existe également une option "SUPPRIMER". Si vous appliquez cela sur le même fichier d'importation, toutes les références contenues dans ce fichier seront supprimées.

Dans le code, c'est ->setBehavior(Mage_ImportExport_Model_Import::BEHAVIOR_DELETE);

Vous pouvez toujours tronquer les tables de produits spécifiques via SQL - mais bien sûr, vous devez résoudre toutes les dépendances et également tronquer ces tables.

Ou: Créez un vidage de base de données "propre" avant d'importer et appliquez ce vidage avant chaque test.

Alex
la source
Merci. Le catalogue est trop volumineux pour utiliser les outils d'importation par défaut de Mage, nous utilisons donc un module tiers. Je pense que la création d'un vidage de base de données propre que je peux restaurer est ma meilleure option.
Ryre
Quel module? Peut-être que celui-ci a également une option de suppression Mage_ImportExport?
Alex
C'est uRapidflow, et je n'ai trouvé aucune option de suppression nulle part.
Ryre
Si vous avez Pro, consultez unirgy.com/wiki/urapidflow/fixed_row_format#cpcatalog_product
Petar Dzhambazov
7

Vous pouvez supprimer tous les produits à l'aide de Direct Sql.

Veuillez sauvegarder votre base de données et exécuter les requêtes SQL suivantes.

Réinitialisez toutes les tables de produits. Attention, le script ci-dessous supprimera TOUTES vos données produit, alors faites-le soigneusement.

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

Supprimer le nombre de produits de la catégorie en back-end

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

Supprimer les produits les plus vendus et les plus consultés sur les tableaux de bord

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

Rincer toute la table plate des produits

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

Supprimer l'avis et la note des produits

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

Pour les entreprises, rincez les tableaux suivants

`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
la source
Il convient de mentionner que si vous avez tronqué vos produits, il est sage d'exécuter l'indexeur. Surtout si vous utilisez Solr. Aussi pour EE, j'ai trouvé que le tableau suivant pouvait aussi être effacé: enterprise_catalog_product_rewriteET pour CE et EE:catalogsearch_query catalog_product_entity_url_key
PanPipes
réponse parfaite avec explication +1 :) !!!
SagarPPanchal
3

Avez-vous regardé Magmi ? L'un de ses plugins "avancés" est un catalogue clair qui est super rapide et réinitialise même l'ID à 1.

Magmi sur SourceForge

andyjv
la source