当前位置: 首页 > article >正文

mysql如何替换数据库所有表中某些字段含有的特定值

目录

  • 背景
  • 查询所有表名
  • 查询表的所有字段
  • 过虑特征字段
  • 替换字段中含有的特定值

背景

公司的测试域名更换了,导致存放在数据库中的域名也要跟着替换,当然把域名存放在数据库表中是不科学的,不建议这样做,但公司的同事就这样做了,分配我把每个数据库中的域名都换了,想了很久,后面得到了一个比较完美的解决方案,下面我们就一起来学习学习吧。

查询所有表名

通过查询表information_schema.TABLES 获得

SELECT
	TABLE_NAME AS '名称',
	TABLE_COMMENT AS '表注释',
	AUTO_INCREMENT AS '下一个自增长值'
FROM
	information_schema.TABLES 
WHERE
	table_schema = '数据库名';

在这里插入图片描述

查询表的所有字段

SELECT
	COLUMN_NAME AS '列名',
	DATA_TYPE AS '类型',
	COLUMN_COMMENT AS '列注释',
	COLUMN_KEY,
	EXTRA,
	CHARACTER_MAXIMUM_LENGTH,
	IS_NULLABLE,
	COLUMN_DEFAULT 
FROM
	information_schema.COLUMNS 
WHERE
	table_schema = '数据库名' 
	AND table_name = '表名';

在这里插入图片描述

过虑特征字段

通过where过虑要替换的字段名

SELECT
	cols.TABLE_NAME AS '表名',
	COLUMN_NAME AS '列名',
	COLUMN_COMMENT AS '列注释' 
FROM
	information_schema.COLUMNS cols 
WHERE
	TABLE_SCHEMA = '数据库名' 
	AND (
		cols.COLUMN_NAME LIKE '%url%' 
		OR cols.COLUMN_NAME LIKE '%adress%' 
		OR cols.COLUMN_NAME LIKE '%file%' 
		OR cols.COLUMN_NAME LIKE '%image%' 
		OR cols.COLUMN_NAME LIKE '%img%' 
		OR cols.COLUMN_COMMENT LIKE '%图片%' 
		OR cols.COLUMN_COMMENT LIKE '%文件%' 
		OR cols.COLUMN_COMMENT LIKE '%地址%' 
	);

在这里插入图片描述

替换字段中含有的特定值

用到的函数:CONCAT,REPLACE
例子中将hw.hongweisoft.comu替换成dev.dazesoft.cn

SELECT
	CONCAT('UPDATE ',cols.TABLE_NAME,' SET ',cols.COLUMN_NAME,' = ','REPLACE(',cols.COLUMN_NAME,',',"'hw.hongweisoft.com'",',',"'dev.dazesoft.cn'",')',';') AS '更新SQL'
FROM
	INFORMATION_SCHEMA.COLUMNS cols 
WHERE
	TABLE_SCHEMA = '数据库名' 
	AND (
		cols.COLUMN_NAME LIKE '%url%' 
		OR cols.COLUMN_NAME LIKE '%adress%' 
		OR cols.COLUMN_NAME LIKE '%file%' 
		OR cols.COLUMN_NAME LIKE '%image%' 
		OR cols.COLUMN_NAME LIKE '%img%' 
		OR cols.COLUMN_COMMENT LIKE '%图片%' 
		OR cols.COLUMN_COMMENT LIKE '%文件%' 
		OR cols.COLUMN_COMMENT LIKE '%地址%' 
	);

在这里插入图片描述
替换的sql语句:

UPDATE buyer_invoice SET address = REPLACE(address,'hw.hongweisoft.com','dev.dazesoft.cn');
UPDATE buyer_user_auth SET address = REPLACE(address,'hw.hongweisoft.com','dev.dazesoft.cn');
UPDATE buyer_user_auth SET company_address = REPLACE(company_address,'hw.hongweisoft.com','dev.dazesoft.cn');
UPDATE buyer_user_auth SET operate_address = REPLACE(operate_address,'hw.hongweisoft.com','dev.dazesoft.cn');
UPDATE cere_activity_sign SET qr_image = REPLACE(qr_image,'hw.hongweisoft.com','dev.dazesoft.cn');
UPDATE cere_address_forbid_config SET forbid_type = REPLACE(forbid_type,'hw.hongweisoft.com','dev.dazesoft.cn');
UPDATE cere_address_forbid_config SET address = REPLACE(address,'hw.hongweisoft.com','dev.dazesoft.cn');
UPDATE cere_after_dilever SET image = REPLACE(image,'hw.hongweisoft.com','dev.dazesoft.cn');
UPDATE cere_after_product SET image = REPLACE(image,'hw.hongweisoft.com','dev.dazesoft.cn');
UPDATE cere_buyer_receive SET receive_id = REPLACE(receive_id,'hw.hongweisoft.com','dev.dazesoft.cn');
UPDATE cere_buyer_receive SET receive_adress = REPLACE(receive_adress,'hw.hongweisoft.com','dev.dazesoft.cn');
UPDATE cere_buyer_receive SET address = REPLACE(address,'hw.hongweisoft.com','dev.dazesoft.cn');
UPDATE cere_buyer_receive SET label = REPLACE(label,'hw.hongweisoft.com','dev.dazesoft.cn');
UPDATE cere_buyer_user SET head_image = REPLACE(head_image,'hw.hongweisoft.com','dev.dazesoft.cn');

最后执行一下就可以了


http://www.kler.cn/news/317869.html

相关文章:

  • 虚拟机centos_7 配置教程(镜像源、配置centos、静态ip地址、Finalshell远程操控使用)
  • 目标检测基本知识
  • 线性dp 总结详解
  • Vue3:$refs和$parent实现组件通信
  • 【树莓派】python3程序获取CPU和GPU温度
  • 无人机之战斗机的详解!
  • 单片机学到什么程度才可以去工作?
  • WebGL纹理与材质
  • 【C++二叉树】236.二叉树的最近公共祖先
  • 使用three.js+vue3完成无人机上下运动
  • 汽车售后诊断ECU参数分析
  • 寄宿制学校自闭症教育:为每个孩子创造奇迹
  • spring boot项目对接人大金仓
  • 线性代数学习笔记~
  • 初识JavaScript
  • 【图像压缩与重构】基于BP神经网络
  • 新版torch_geometric不存在uniform、maybe_num_nodes函数问题(Prune4ED论文报错解决)
  • python request库的使用
  • 深度学习领域相关的专业术语(附带音标解释)
  • EtherCAT转Profient协议网关简述
  • MySQL函数及存储过程
  • 视频制作软件哪个好?前十名推荐!
  • 云手机的便捷性和安全性体现在哪?
  • redisson 延迟队列实现任务过期监听
  • Hbase操作手册
  • git笔记之重置本地仓库所有分支和远程保持一致、工作区恢复干净,像刚clone下来一样
  • 阅读记录:Gradient Episodic Memory for Continual Learning
  • 十三 系统架构设计(考点篇)
  • 【python】数据类型
  • react hooks--useCallback