mysql:从 10k wordpress 帖子中清除垃圾,但保留相关内容

Posted

技术标签:

【中文标题】mysql:从 10k wordpress 帖子中清除垃圾,但保留相关内容【英文标题】:mysql: clean garbage from 10k wordpress posts but keeping something relevant 【发布时间】:2012-01-14 13:51:44 【问题描述】:

我是一个 mysql 门外汉,我请求帮助。

我继承了一个 wordpress 3.1.0 网站,该网站有大约 10,000 个帖子。每个帖子都有很多原始所有者不必使用的不相关数据,例如当他们可以使用插件时,每个帖子中都有谷歌分析数据(我试图想象他们复制该代码 10k+ 次)。

我想清理帖子,但在 10k 帖子中的每一个中有两行包含文件,我希望保留用“[]”包围。

帖子如下所示:

垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾 [包括文件=“文件名”主路径=“/home/name/dir”] 垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾 [包括文件=“文件名”主路径=“/home/name/dir”] 垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾

我的目标,当然是在运行 phpMyAdmin sql 转储之后 :) 是删除 [include file] 语句周围的所有垃圾。

必须有一种方法可以通过一两行 SQL 来执行此操作,但我还是一个 mySQL 外行。有人可以帮我吗? “手动”/“手动”删除代码的所有实例是不可能的......大约 100 个帖子,也许......但不是 10k 个帖子......

谢谢

【问题讨论】:

明确一点,在运行 sql delete 查询后,我希望每 10k 个帖子的结果是:[include file="filename" masterpath="/home/name/dir"] [include file="filename" masterpath="/home/name/dir"] 感谢您的帮助。 我们可以依靠括号来只包围重要的数据吗?您很可能需要一个可靠的分隔符来确定何时开始捕获要保存的数据以及何时停止捕获。 是的,我们可以 100% 依赖括号 【参考方案1】:

我建议您按照您的建议执行 SQL 转储,然后使用正则表达式模式对您的 SQL 文件应用查找和替换。如果您有权访问“sed”实用程序,则可以应用以下表达式来更新 SQL 语句:

sed -i -r 's/.*(\[.*\]).*(\[.*\]).*/\1\2/' /path/to/sql_dump_file

请注意,“-i”标志使该编辑内联,这意味着原始文件已被更改。请确保您首先备份了数据库转储。

您必须将此正则表达式限制为仅针对适当的 SQL INSERT 语句运行。我建议将此部分从您的 SQL 转储文件中复制到一个新文件中以应用此操作。

“-r”标志将允许扩展正则表达式,它允许我们对模式匹配进行分组。以下字符串指示仅匹配括号的内容并丢弃其余数据。

这里有更多关于 sed 的信息:http://unixhelp.ed.ac.uk/CGI/man-cgi?sed

【讨论】:

以上是关于mysql:从 10k wordpress 帖子中清除垃圾,但保留相关内容的主要内容,如果未能解决你的问题,请参考以下文章

如何从一组自定义字段值中显示 Wordpress 帖子

使用 MySql 在 Wordpress 中插入帖子

WordPress——统计所有用户的帖子

如何在MySQL中加入查询以根据距离计算和Google地理编码查找WordPress帖子?

sql 批量更新mysql中的WordPress帖子状态

sql MySQL WordPress删除帖子和postsmeta