我的magento数据库中有大约800,000个产品,我需要删除大约一半的产品(大约400,000个)。
在magento 1.7.0.2上运行
从“管理产品”页面开始,我只是永远这样做。该过程需要很长时间,服务器会保持超时。
是否有可以从数据库中删除所选产品的SQL语句? 所有需要删除的产品,标题都以* NLA
开头我知道magto将产品数据存储在几个不同的表中,所以我试图弄清楚如何从所有表中删除与所选产品相关的所有数据。
我知道MySQL语句,但我不是专家,也无法解决这个问题。 例如,如果它只是一个表我会做这样的事情: DELETE FROM product_table WHERE title_value LIKE'* NLA%'
如果有人能指出我正确的方向,我将不胜感激。
答案 0 :(得分:1)
您可以使用此查询
DELETE FROM product_table WHERE title_value LIKE '*NLA%
Magento使用InnoDB引擎存储MySQL和外键。所有具有FK密钥的数据也将被删除。
答案 1 :(得分:0)
如果要从单个表中删除,则SQL
语句应该可以完成这项工作。
如果存储在不同的表中,则取决于它们的存储方式。例如,如果产品根据其密钥在不同表中存储为foreign key
,那么所有相关表将在从主表中删除产品时更新(取决于外键是否设置为{ {1}}或不。)
但要注意CASCADE ON DELETE
条件下给出的正则表达式,确保没有其他产品在其标题中的某处具有'NLA'。
编辑:你说从'NAL'开始?在这种情况下,你的正则表达式应该是LIKE
'NAL*%'
答案 2 :(得分:0)
在Magento中,产品详细信息使用EAV概念存储在数据库中,因此有超过30个表格可以显示产品数据。
我建议你使用Magento导出工具进行批量删除。
参考此链接: magento: bulk delete products via import/export facility?
还有一个可以使用的扩展Magmi。