3

私は約 80 の wordpress ブログを持っており、さまざまなサイトについて書いています。特定のテキスト文字列 (この例ではドメイン名) について、すべてのデータベース内のすべての投稿を更新したいと考えています。

スクリプトは 1 つのデータベースでは問題なく動作しますが、すべてのデータベースに対していくつかの変更を加える必要があり、単純に時間がかかりすぎます。

一度に 1 つのデータベースではなく、すべてのデータベースでこれらのコマンドを一度に実行できる必要があります。

現在、単一のデータベースで動作するため、私のスクリプトは次のとおりです。

UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://www.old-domain.com', 'http://mixudo.com');

どうもありがとう

4

3 に答える 3

0
  1. スクリプトを実行する必要があるユーザー名/パスワードを含むデータベース名のリストを作成します
  2. このリストの各データベースに対して、次の操作を行います。
  3. そのデータベースにログインして選択します
  4. そのデータベースでスクリプトを実行します

それがあなたの仕事を安全に行う唯一の方法です。

于 2012-12-06T21:03:07.597 に答える
0

SHOW DATABASES コマンドを使用して、mysql サーバー上のデータベースのリストを取得できます。それを入力として使用して、データベースのリストを介して foreach() を実行し、それぞれに対して UPDATE ステートメントを実行することができる任意の言語でシェルスクリプトを作成できます。

use DBNAME;

DBNAME は foreach の変数です。update ステートメントは、すべてのデータベースで同じように機能するはずです。各データベースには、それぞれに同じテーブル名を持つ同じセットのテーブルがあると想定しているためです。

Ed Heal の指摘によれば、これは、サーバーに root/admin ユーザーを使用していることも前提としているため、すべてのテーブルを更新する権限があります。

于 2012-12-06T21:04:02.057 に答える