1. 程式人生 > 實用技巧 >MySQL批量修改指定庫的所有表的字符集 & collation

MySQL批量修改指定庫的所有表的字符集 & collation

#!/bin/bash

host=192.168.100.13
user=root
password=password
declare -a database
database=(CJML_QxbEPC CJML_VIN Grab)

function bacula() {
        #echo $1
        mysql -h"$host" -u$user --password=$password --skip-column-names -e "show full tables from $1 where table_type = 'BASE TABLE'" 2>/dev/null | awk '{print $1}' | while read b;do
#echo $b #echo -e database $1 '\t\t' table "\e[7m$b\e[0m" '\t\t'convert to character set utf8mb4 collation utf8mb4_general_ci printf '%s \e[5m%-15s\e[0m %s \e[7m%-30s\e[0m %s' database $1 table $b 'convert to character set utf8mb4 collation utf8mb4_general_ci
' echo mysql -h$host -u$user --password=$password -e "set @@session.foreign_key_checks=0;alter table ${1}.$b convert to character set utf8mb4 collate utf8mb4_general_ci" 2>/dev/null; done } function main() { for b in ${database[@]};do bacula $b done } main