【问题标题】:Magento - Delete selected products with SQL queryMagento - 使用 SQL 查询删除选定的产品
【发布时间】:2013-03-14 18:23:02
【问题描述】:

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

在 magento 1.7.0.2 上运行

从“管理产品”页面完成这项工作需要我很长时间。该过程需要很长时间,并且服务器不断超时。

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

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

我知道 MySQL 语句,但我不是专家,无法弄清楚这一点。 例如,如果它只有一张桌子,我会做这样的事情: DELETE FROM product_table WHERE title_value LIKE '*NLA%'

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

【问题讨论】:

    标签: php mysql sql magento magento-1.7


    【解决方案1】:

    你可以使用这个查询

    DELETE FROM product_table WHERE title_value LIKE '*NLA%
    

    Magento 使用带有外键的 MySQL 的 InnoDB 引擎存储。所有具有 FK 键的数据也将被删除。

    【讨论】:

      【解决方案2】:

      如果您要从单个表中删除,您的 SQL 语句应该可以完成这项工作。

      如果存储在不同的表上,则取决于它们的存储方式。例如,如果产品在不同的表中根据它们的键是foreign key 存储,那么当产品从主表中删除时,所有相关表都会更新(取决于外键是否设置为CASCADE ON DELETE与否)。

      但请注意LIKE 条件中给出的正则表达式,确保没有其他产品在其标题中包含“NLA”。

      编辑:你说从“NAL”开始?在这种情况下,您的正则表达式应该类似于 'NAL*%'

      DELETE FROM product_table WHERE title LIKE 'NAL*%'
      

      【讨论】:

        【解决方案3】:

        在 Magento 中,产品详细信息使用 EAV 概念存储在数据库中,因此产品数据将存放在 30 多个表中。

        我建议您使用 Magento 导入导出工具进行批量删除。

        参考这个链接: magento: bulk delete products via import/export facility?

        还有一个扩展 Magmi 也可以使用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-07-23
          • 1970-01-01
          • 1970-01-01
          • 2020-02-24
          • 1970-01-01
          • 2013-10-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多