📜  在整个数据库 mysql stackoverflow 中替换字符串 - SQL (1)

📅  最后修改于: 2023-12-03 15:37:43.242000             🧑  作者: Mango

在整个数据库 mysql stackoverflow 中替换字符串 - SQL

在MySQL中,想要在整个数据库中替换一个字符串,可使用以下步骤:

  1. 首先使用以下命令查看所有表名:
SHOW TABLES;
  1. 对每个表执行以下步骤:
  • 首先将表设置为可写模式:
SET SESSION SQL_SAFE_UPDATES=0;
  • 使用以下命令替换表中的字符串(例如将“old_string”替换为“new_string”):
UPDATE table_name SET column_name = REPLACE(column_name, 'old_string', 'new_string');
  • 可以选择将表重新设置为安全模式:
SET SESSION SQL_SAFE_UPDATES=1;
  1. 重复步骤2,对每个表执行操作,直到整个数据库中的字符串都被替换。

以上步骤可以使用以下SQL脚本自动执行:

SET SESSION SQL_SAFE_UPDATES=0;

SET group_concat_max_len=32768;

SELECT
  CONCAT('UPDATE `', table_schema, '`.`', table_name, '` SET `', column_name, '` = REPLACE(`', column_name, '`, \'old_string\', \'new_string\');') AS `execute_this`
FROM
  `information_schema`.`columns`
WHERE
  `table_schema` = 'database_name' AND
  `data_type` IN('char','varchar','tinytext','text','mediumtext','longtext') AND
  `column_name` NOT LIKE 'binary%';

SET SESSION SQL_SAFE_UPDATES=1;

以上SQL脚本会自动查询出符合条件的表和列,并生成对应的SQL语句,方便进行批量替换操作。

参考资料: