首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何一次在所有数据库上运行sql命令?

问如何一次在所有数据库上运行sql命令?
EN

Stack Overflow用户
提问于 2012-12-07 04:58:55
回答 3查看 2.2K关注 0票数 3

我有大约80个wordpress博客,上面写着我的各种网站。我想要更新所有数据库中特定文本字符串的所有帖子,在这种情况下,是一个域名。

脚本在一个数据库上运行得很好,但我需要对所有数据库进行几次更改,这将花费太长的时间。

我需要能够一次在每个数据库中运行这些命令,而不是一次运行一个数据库。

我的脚本,因为它当前在单个数据库上工作:

代码语言:javascript
复制
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://www.old-domain.com', 'http://mixudo.com');

非常感谢

EN

回答 3

Stack Overflow用户

发布于 2016-12-16 21:13:44

尝试执行此查询:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2012-12-07 05:03:08

  1. 为此列表中的每个数据库创建一个数据库名称列表,其中包含您需要在
  2. 上执行脚本的用户名/密码do:
  3. 登录到该数据库并将其选中
  4. 在该数据库上运行脚本

<代码>G29

这是安全完成任务的唯一方法。

票数 0
EN

Stack Overflow用户

发布于 2012-12-07 05:04:02

您可以使用SHOW databases命令获取mysql服务器上的数据库列表。使用该脚本作为输入,您可以用您能够使用的任何语言编写shell脚本,该脚本将在数据库列表中遍历foreach(),并在每个数据库上运行UPDATE语句,方法是执行

代码语言:javascript
复制
use DBNAME;

其中,DBNAME是foreach中的变量。update语句在所有数据库上的工作方式应该是相同的,因为我假设每个数据库都有相同的表集,每个表名都相同。

根据Ed Heal的观点,这还假设您使用的是服务器的root/admin用户,这样它就有权更新所有的表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13752441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档