我的magento数据库中有大约80万种产品,我需要删除其中大约一半的产品(大约40万种)。
运行在magento 1.7.0.2上
在"管理产品"页面上这样做花了我很长时间。处理时间过长,服务器超时。
是否存在可以从数据库中删除所选产品的SQL语句?所有需要删除的产品,标题以*NLA
开头我知道magneto将产品数据存储在几个不同的表中,所以我试图找出如何从所有表中删除与所选产品相关的所有数据。
我知道MySQL语句,但我不是专家,不能弄清楚这个。例如,如果只有一张表,我会这样做:DELETE FROM product_table WHERE title_value LIKE '*NLA%'
如果有人能给我指出正确的方向,我会很感激的。您可以使用这个查询
DELETE FROM product_table WHERE title_value LIKE '*NLA%
Magento使用InnoDB引擎存储MySQL的外键。所有具有FK键的数据也将被删除。
如果您要从单个表中删除,则您的SQL
语句应该完成这项工作。
如果存储在不同的表中,则取决于它们的存储方式。例如,如果产品在不同的表中根据其键为foreign key
进行存储,那么当产品从主表中删除时(取决于外键是否设置为CASCADE ON DELETE
),所有相关的表都将更新。
但是要小心LIKE
条件下给出的正则表达式,确保没有其他产品的标题中有'NLA'。
'NAL*%'
DELETE FROM product_table WHERE title LIKE 'NAL*%'
在Magento中,产品详细信息使用EAV概念存储在数据库中,因此有超过30个表可以存放产品数据。
我建议您使用Magento导入导出工具进行批量删除。
参考这个链接:Magento:通过进出口设施批量删除产品?
有一个扩展Magmi也可以使用