web-dev-qa-db-ja.com

SQLで標準URLを一括編集する方法

私は、クライアントのサイトにある約600の投稿の正規のURL(rel = "canonical")を編集するよう割り当てられています。すべての投稿が同じ標準URLを使用するわけではありません。これらの301や302でもありません。各投稿を一度に1つずつ編集する必要があるため、プラグインを使用しないように言われました。これらは私がとろうと計画している一般的なステップです:

  1. PhpMyAdminでmySQLデータベースの適切なバックアップを作成してください。
  2. 正規のURLを含むテーブルのCSVをダウンロードします(phpMyAdminエクスポートを使用)。
  3. 投稿IDと新しい標準URL(そしてもう少し魔法)を使った新しいcsvを作成します。
  4. データベースに新しいURLを書き込むReally Simple CSVというプラグインを通して、新しいcsvを(LibreOfficeを使用して正しい形式で)インポートします。

これは私がこれらのステップのためにフォローしているチュートリアルです

私の質問は次のとおりです。phpMyAdminを使用して、現在これらのURLを格納するためにどのテーブルが使用されていますか。正確には何と呼ばれますかそして、誰かが以前にこの種の編集をしたことがありますか?

このサイトは現在WordPress 3.9.x上にあります(彼らのサイトを新しいバージョンに更新することは私たちの仕事の範囲外です)。

助けてください!

2
jtorres

CSVをダウンロードしてアップロードすることは、人手によるミス(およびタイプミス)が発生しやすい、手動でたくさんのステップを作成することを強いるものです。私の提案はあなたのDBのローカルコピーであなたがローカルでバトルテストできる何かをすることでしょう。従うべきステップ:

  1. データベースダンプを作成しますmysqldumpツールを使用し、scpを使用して ローカルにコピーします
  2. ローカルのWPをインストールします
  3. ローカルに WP CLI 、WPコマンドラインランナーをインストール
  4. 必要なコマンドをローカルに使用して wp post update を実行します。
  5. テスト
  6. ライブデータベースの名前を変更して保存する
  7. データベースのローカルコピーをステージングサーバーにアップロードします
  8. もう一度テストする
  9. あなたの調整されたデータベースをあなたのライブデータベースにしましょう

誰もデータベースに煩わされない時間があることを確認してください(サイトをメンテナンスモードにしてください)。

注:

A)MySQLサーバーのIPとポートを知っている場合は、直接SSHサーバーに接続してリモートに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

あなたの投稿のためのその変換スラグについてその詳細を述べなかったので、あなたは上記の例でfoobarを調整する方法を見つける必要があるでしょう。 tag:bash トピックには、たくさんのStackoverflow回答があります。いつものように sedは救済のために - Shellスクリプトのawksedで修正できないものは世界にはありません。

あなたの端末から以下のようなシェルスクリプトを実行することができます。

sh convert.sh

試してみて失敗し、 すすぎ、 を繰り返してください。

私はほとんど私の頭の外でそれを書いたので、あなたはそれをテストしなければならないでしょう。あなたがそれを再びゴミ箱に入れることができるようにあなたのローカルDBのコピーを作っておいたほうがよい。

2
kaiser