Blog

删除数据库中的换行符

早先我的 blog 是用 WordPress 搭建的,后来我想尝试一下 Movable Type,就把所有文章都导入到 Movable Type 里了。之后我对 Movable Type 失望了,就把 blog 系统换回了 WordPress,但在导入过去的文章的时候,发生了一些问题。

其中最主要的就是所有的自然段都被合并到了一起,生成的文章全都成了一大坨,基本上无法阅读。当时我对网站、数据库之类的知识了解的不大透彻,于是想出了一个笨办法,在该换行的地方插入 br 标签,这样算是变相的解决了问题。后来我想想,可能未必是 Movable Type 和 WordPress 格式不兼容的问题,导致了两者互相导出导入会有问题。应该跟我使用了 Markdown 插件有关系,毕竟插件是第三方的,也没办法精确控制。

当时我还写了几行 Ruby 小程序,判断在什么地方改加换行标签,把 Movable Type 导出的文件给扫了一遍,把输出的文件导入到 WordPress 中就可以了。但这也带来了一些其它的问题,比如当一篇文章里有引用的地方,如果在换行处都有换行标签,那么 Markdown 会一直把引用开始时到文章结尾的部分都当作一个引用,这明显不对。为了解决这个问题,我也不愿意在 WordPress 里不断的导出导入,还要删除旧的文章,于是就选择了一个更笨的方法——平日里随机选一篇文章,进入后台的编辑,然后手动去除换行标签。用一个编辑器的查找替换来弄其实还挺快的,顺便也可以修改一下有问题的 tag。时不时的修改几篇,总有一天可以完成吧。

昨天晚上在看一个 WordPress 主题制作的牛人 zww 的 blog 的时候,看到了这么一篇文章:《闲来蛋疼: 把所有文章的more标签去掉了》。在文章里作者提到了用 SQL 操作数据库,把他的文章里的 more 标签给批量的删除掉。里面仅仅用了一行 SQL 语句就把所有文章的标签给删除了。我一看大喜过望:zww 要删除 more 标签,我何尝不想批量删除我的文章里的 br 标签呢?把他给的 SQL 语句略作修改,我很容易的就用下面的这条语句删除了旧文章里的换行标签:

UPDATE wp_posts SET post_content = REPLACE(post_content, '<br />','');

zww 用的是 phpMyAdmin 来执行 SQL 语句。我用了 Nginx 之后就没有在 VPS 上安装这个工具,因此只能通过 MySQL 的命令行客户端来执行这条语句。我用 mysql blog -p 进入了命令行客户端之后,由于太长时间没有在后台设定数据库了,竟然有了一种茫然的感觉。想了半天才渐渐的回忆起了一些命令,真是让我深有感触。看来这些东西还是得靠熟能生巧啊。

没有评论

Leave a Reply