MYSQL查询所有表,拼接修改列脚本

select 
t.TABLE_NAME,
GROUP_CONCAT(t.COLUMN_NAME),
CONCAT("UPDATE ",t.TABLE_NAME," set ",GROUP_CONCAT(t.COLUMN_NAME,"=REPLACE(REPLACE(",t.COLUMN_NAME,",\"•\",\"·\"),\"●\",\"·\")"),";")

from information_schema.columns t
where t.table_schema = 'bmp_quota' and t.COLUMN_NAME like '%pro_name' and t.TABLE_NAME NOT like 'v_%' and t.TABLE_NAME NOT like 'vw_%'
and t.TABLE_NAME NOT like '%_copy%'

GROUP BY t.TABLE_NAME ORDER BY t.TABLE_NAME ;

MySQL中,直接统计所有的总大小可能会比较复杂,因为MySQL并没有提供一个内置函数可以直接获取这个信息。不过,你可以通过一些组合查询和系统来估算。以下是一个示例脚本,它将遍历所有的数据并计算它们的总空间占用: ```sql SET @table_name = ''; SET @sql = 'SELECT (Data_length + Index_length) AS TotalSize, table_name FROM information_schema.tables t WHERE table_schema = DATABASE() AND table_type = ''BASE TABLE'' AND table_name != ''information_schema``'; WHILE (@table_name IS NOT NULL) BEGIN SET @table_name = (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME > @table_name AND TABLE_TYPE = 'BASE TABLE'); IF (@table_name IS NOT NULL) THEN SET @sql = CONCAT(@sql, ', (Data_length + Index_length) AS `TotalSize_', @table_name, '`, table_name = ?', @table_name); END IF; END; PREPARE stmt FROM @sql; EXECUTE stmt; ``` 这段脚本首先设置了一个循环,从`information_schema.tables`开始查找当前数据库中的下一个名,然后在循环体中拼接SQL,每次添加一个新的名到统计中。最后,执行这个动态生成的SQL来获取每个的总大小。 注意,这个方法可能不是完全准确的,因为它可能无法考虑到视图、存储过程等非基础的大小,并且在大数据库中可能效率较低。如果你需要精确的数据,可能需要单独处理这类特殊的或者依赖于数据库管理系统特定的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值