Magento - 使用SQL查询删除所选产品

时间:2013-03-14 18:23:03

标签: php mysql sql magento magento-1.7

我的magento数据库中有大约800,000个产品,我需要删除大约一半的产品(大约400,000个)。

在magento 1.7.0.2上运行

从“管理产品”页面开始,我只是永远这样做。该过程需要很长时间,服务器会保持超时。

是否有可以从数据库中删除所选产品的SQL语句? 所有需要删除的产品,标题都以* NLA

开头

我知道magto将产品数据存储在几个不同的表中,所以我试图弄清楚如何从所有表中删除与所选产品相关的所有数据。

我知道MySQL语句,但我不是专家,也无法解决这个问题。 例如,如果它只是一个表我会做这样的事情: DELETE FROM product_table WHERE title_value LIKE'* NLA%'

如果有人能指出我正确的方向,我将不胜感激。

3 个答案:

答案 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。