如何在SQL中批量编辑规范的URL?

时间:2016-06-08 作者:jtorres

我被指派编辑客户网站上大约600篇文章的规范URL(rel=“canonical”位于头部)。并非所有帖子都使用相同的规范url。这些301或302也不是。我被告知不要使用插件,因为我必须一次编辑一篇文章。以下是我计划采取的一般步骤:

在phpMyAdmin中对mySQL数据库进行适当的备份This is the tutorial I\'m following for these steps.

我的问题是:使用phpMyAdmin,当前用于存储这些url的表是什么,它们的确切名称是什么?还有,以前有人做过这种编辑吗?

该网站目前位于WordPress 3.9上。x(将他们的网站更新到新版本超出了我们的工作范围。)

救命啊!

1 个回复
最合适的回答,由SO网友:kaiser 整理而成

下载和上传CSV是一项艰巨的任务,它迫使您手动执行一系列步骤,这很容易导致人为错误(和打字错误)。我的建议是做一些可以在DB的本地副本中进行本地测试的事情。要遵循的步骤:

做一个database dump 使用mysqldump 工具和使用scpcopy it to you locally

  • 启动本地WP安装WP CLI, WP命令行运行程序,本地运行wp post update 使用必要的本地测试命令,通过重命名保存live数据库,将数据库的本地副本上载到登台服务器,再次测试调整后的数据库您的live数据库,确保您有一段时间没有人摆弄数据库(使您的站点进入维护模式!)。

    Notes:

    A) 如果您知道MySQL服务器的IP和端口,您可以直接连接到它并将转储下拉到您的计算机,而无需SSH连接到远程:

    mysqldump -P3306  -h127.0.0.1 -uroot -pYourPassWord databasename > ./dbdumps
    
    将其转储到当前目录的子文件夹中(pwd) 已命名dbdumps. 你应该提前创建它。

    B) 假设您有可用的Bash(如果没有,命令行–sh仍然足够),您可以使用如下脚本。将其添加到名为convert.sh. 另外,假设您在本地安装了WP CLI(或您的Vagrant机器、Docker容器,无论您在本地使用的是什么开发环境):

    #!/usr/bin/env bash
    for id in $(wp post list --field=ID); 
    do
        wp post update $id --post_name=foobar
    done
    
    由于你没有详细说明你的帖子slug的转换,你必须找到一种方法来调整foobar 在上述示例中。上有几十个Stackoverflow答案tag:bash 主题以帮助您。像往常一样sed for the rescue –世界上没有什么东西不能用awksed在shell脚本中。

    您可以从终端运行如下所示的shell脚本:

    sh convert.sh
    
    试一试,失败,冲洗,然后重复。

    我写的都是我的想法,所以你必须测试一下。最好复制一份本地数据库,这样就可以再次将其丢弃。