簡體   English   中英

如何一次在所有數據庫上運行sql命令?

[英]How can I run an sql command on all databases at once?

我有大約80個wordpress博客,寫了我的各種網站。 我想更新所有數據庫中的所有帖子,以獲取特定的文本字符串,在本例中為域名。

該腳本在一個數據庫上運行得非常好,但是我需要對所有數據庫進行一些更改,這些更改只需要很長時間。

我需要能夠一次跨每個數據庫運行這些命令,而不是一次只運行一個數據庫。

我的腳本,因為它當前在單個數據庫上工作:

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

非常感謝

嘗試執行此查詢:

SELECT CONCAT('UPDATE ', 
schema_name, '.\'wp_posts\' SET \'post_content\' = REPLACE(post_content, \'http://www.old-domain.com\', \'http://mixudo.com\');')
FROM information_schema.schemata
WHERE schema_name NOT IN ('information_schema','mysql','performance_schema','phpmyadmin', 'webauth');

然后重新執行結果。

資料來源: https//dba.stackexchange.com/a/20251

  1. 使用您需要在其上執行腳本的用戶名/密碼創建數據庫名稱列表
  2. 對於此列表中的每個數據庫,請執
  3. 登錄該數據庫並選擇它
  4. 在該數據庫上運行該腳本

這是安全完成任務的唯一方法。

您可以使用SHOW DATABASES命令獲取mysql服務器上的數據庫列表。 使用它作為輸入,你可以用你能夠通過數據庫列表foreach()的任何語言編寫一個shell腳本,並通過執行每個數據庫運行UPDATE語句

use DBNAME;

其中DBNAME是foreach中的變量。 update語句應該對所有數據庫都一樣,因為我假設每個db都有相同的表集,每個表中都有相同的表名。

對於Ed Heal而言,這也假設您正在使用服務器的root / admin用戶,以便它有權更新所有表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM