您的位置:首页 > 数据库 > MySQL

mysql利用脚本批量修改数据库名字,安全快捷

2016-11-17 11:40 537 查看
本人数据库的引擎是innodb;

脚本,里面包含了,字符串的匹配,以及正则表达式

if语句, for 语句

之前网上有一种,

是直接修改数据库里面的表面的形式,很遗憾这样做,还是会出现丢表的现象。

最安全的一种形式应该是,备份与还原

#!/bin/bash
mysqlconn="mysql -ulyon3306 -p5601564a  -h192.168.1.128"

mysqldump_out="mysqldump  -ulyon3306 -p5601564a  -h192.168.1.128 --opt -R  heke > /dtd/backup/sqls/heke.sql"
mysqldump_in="mysql  -ulyon3306 -p5601564a  -h192.168.1.128  hewke < /dtd/backup/sqls/heke.sql"
olddb="heke"
newdb="hewke"

create_newdb="$mysqlconn -e 'create database heke10000  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;'"

echo $create_newdb;
#eval $create_newdb ;
params=$($mysqlconn -N -e "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='$olddb'")
params_dbs=$($mysqlconn -N -e "show databases")
#$create_newdb &&

for db_name in $params_dbs ;do

if [[ $db_name == heke100* ]]
then
new_db_name=${db_name/'heke'/'hewke'}
create_inewdb=${create_newdb/'heke10000'/$new_db_name}
imysqldump_out=${mysqldump_out//'heke'/$db_name}
imysqldump_in=${mysqldump_in//'heke'/$db_name}
imysqldump_in=${imysqldump_in//'hewke'/$new_db_name}

echo $new_db_name;
echo $db_name;
echo $create_inewdb;
echo $imysqldump_out;
echo $imysqldump_in;

eval  $create_inewdb ;
eval $imysqldump_out;
eval $imysqldump_in;

#for name in $params; do
#show="$mysqlconn -e 'RENAME TABLE $db_name.$name to $new_db_name.$name';"

#echo $name
#echo $show

#eval $show;
#done;

fi

done;

#$mysqlconn -e “DROP DATABASE $olddb”


mysqldump -h192.168.1.128 -ulyon -p5601564a --opt -R heke10034 > G:\conf\log_basic_1119.sql
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: