批量更改mysql字符集

Posted Demonson

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批量更改mysql字符集相关的知识,希望对你有一定的参考价值。

1.修改mysql服务器字符集

SHOW VARIABLES LIKE '%char%';

character_set_server=utf8mb4
重启服务器参数生效

2.更改所有历史业务表字符集

脚本如下:changeChar.sh

#!/bin/sh

#数据库连接信息
USERBANE='root'
PASSWD='root123'
HOST='127.0.0.1'
PORT='3306'


#查询业务库
mysql -u$USERBANE -p$PASSWD -h$HOST -P$PORT -e "select schema_name from information_schema.schemata where schema_name not in ('mysql','sys','information_schema','performance_schema')" -B > DBName.txt

#批量生成修改字符集脚本并执行
cat DBName.txt | while read line
do
    if [ $line = 'SCHEMA_NAME' ];then
    continue
    fi    
    echo "批量生成连接数据库脚本: "$line
    String='SELECT CONCAT("ALTER TABLE ", TABLE_NAME," CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;") AS SQL1 FROM INFORMATION_SCHEMA.TABLES WHERE  TABLE_TYPE="BASE TABLE" AND TABLE_SCHEMA="'$line'"'
    #echo $String
    mysql -u$USERBANE -p$PASSWD -h$HOST -P$PORT -D $line -e "$String" -B  > DBName.sql
    sed -i '1d' DBName.sql 
    cat DBName.sql  
    mysql -u$USERBANE -p$PASSWD -h$HOST -P$PORT -D $line < DBName.sql
done

以上是关于批量更改mysql字符集的主要内容,如果未能解决你的问题,请参考以下文章

mysql 数据库 列表中的字段前如何批量添加指定字符?

mysql批量更改数据失败!

mysql批量更改表前缀名

使用 play、hibernate 和 mysql 更改 rewriteBatchedStatements

MySQL 8 批量修改字符集脚本

MySQL 8 批量修改字符集脚本