用于删除数据库中的WordPress附件的正则表达式

时间:2012-09-02 17:47:25

标签: sql regex wordpress attachment

我不得不移动我的WordPress网站并对媒体做了一些清理工作,然后运行插件将已清理的媒体重新插入数据库。它的方式是通过查看目录,所以现在而不是只有文件:xyz.jpg,我有xyz-150x150,xyz-200x200等。我想在我的SQL上运行一个正则表达式来删除所有具有_wp_attached_file的附件,然后它们遵循以下命名方案“name-”“sizes”。例如:

INSERT INTO `wp_postmeta` VALUES(2379, 2152, '_wp_attached_file', '2010/09/Oneonta-Gorge-leaves-150x150.jpg');

这整行将被删除,但看起来像这样的行仍将保留:

INSERT INTO `wp_postmeta` VALUES(2379, 2152, '_wp_attached_file', '2010/09/Oneonta-Gorge-leaves.jpg');

另外,如果您认为删除-200x200更容易,然后运行另一个脚本来删除重复的行,那么也可以。我有不同的维度:

  • 150×150
  • 200×200
  • 200x300
  • 300x189

1 个答案:

答案 0 :(得分:0)

这是你可以尝试的东西。第一个查询将选择具有尺寸后缀的所有图像。这只是为了检查查询的完整性,以确保您选择所需的图像。

select * from wp_postmeta where meta_key = '_wp_attached_file' and meta_value regexp  '.+-[0-9]{3}x[0-9]{3}\.(jpg|gif|png)$'

如果您对结果满意,可以运行删除查询:

delete from wp_postmeta where meta_key = '_wp_attached_file' and meta_value regexp  '.+-[0-9]{3}x[0-9]{3}\.(jpg|gif|png)$'

或者您可以使用LIKE。你必须为每个维度运行它。此查询还假定使用三个字符的扩展名,例如gif,jpg或png。

select * FROM wp_postmeta WHERE meta_key = '_wp_attached_file' and meta_value LIKE '%-150x150.___'