在一台服务器上更新多个数据库/表

时间:2018-07-24 20:27:02

标签: mysql sql mysql-workbench

我正在使用Workbench,我不是SQL方面的专家,但总是愿意学习。

我的目标是一次更新多个表,并在所有找到的结果上进行替换。

类似的东西:

SELECT * FROM *.*;
UPDATE *.* SET post_content = REPLACE(post_content,'data-exclude="direct"','');

但是语法错误。我有100多个需要更新的数据库,所以我宁愿不必列出每个数据库。

此外,如果有帮助,我正在每个数据库中编辑同一张表,因此,如果还有另一种解决方法,那就太好了。该表在每个数据库中都有不同的前缀,但始终以_posts

结尾

提前谢谢!

1 个答案:

答案 0 :(得分:1)

正如我在评论中指出的那样,您将必须动态写出每个UPDATE语句,然后执行每个动态生成的语句。您可以编写脚本或过程来执行此操作,也可以只编写一些SQL来识别包含您所需要的列名的数据库/表,并以这种方式写出UPDATE语句:

SELECT DISTINCT CONCAT('UPDATE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` SET post_content = REPLACE(post_content,''data-exclude="direct"'','''');') as statement
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'post_content';

或者类似的...(未经测试)

然后只需将结果复制/粘贴回sql客户端并执行。