mysql如何更改數據庫名(一鍵實現mysql改數據庫名)


由於某種原因,有時我們有可能需要數據庫的名稱,但是不像官方有rename可以去更改表名,並沒有一個命令可以去更新數據庫的名字。

思路:借助rename這個命令

基本操作:rename olddb.tables to newdb.tables

但是這個命令碰到視圖會出錯,也不能把舊庫中的函數,存儲過程,事件移過來,對於這一些,我們可以從舊庫中導出這些定義,再導入到新庫中。我們不可能一個個去改,得借助腳本。

 

腳本實現的邏輯思路:

1.查看要改的新舊庫是否存在,來判斷是否需要進一步處理

2.先用rename把所有的表移到新命名的庫中

3.導出舊庫中的視圖,函數,存儲過程,事件。

4.導入新庫中

5.刪除舊庫

這個方法把全部數據導出再導入來得更快。

 

完整的腳本如下(操作前請作好備份):

[chenzejin@localhost sh_script]$ cat mysql_rename_database.sh 
#!/bin/bash

#script_name: mysql_rename_database.sh
MYSQL_USER='root'
MYSQL_PASSWD='123'
MYSQL_BIN='/usr/local/mysql/bin'
HOSTS=127.0.0.1 
PORT=3310

if [ $# -ne 2 ]; then echo "usage:./mysql_rename_database.sh oldDB newDB" exit fi user_identify=" -h$HOSTS -P$PORT -u$MYSQL_USER -p$MYSQL_PASSWD " oldDB_exist=`$MYSQL_BIN/mysql $user_identify -ss -e " select schema_name from information_schema.schemata where schema_name=""'"$1"'" ` newDB_exist=`$MYSQL_BIN/mysql $user_identify -ss -e " select schema_name from information_schema.schemata where schema_name=""'"$2"'" ` if [ -z "$oldDB_exist" -o -n "$newDB_exist" ]; then echo "Database $1 does not exist or Database $2 exist ,please confirm! " exit 1 fi #dump all views DUMPTIME=`date +%Y%m%d_%H%M%S` list_views=$($MYSQL_BIN/mysql $user_identify -Nse "select table_name from information_schema.TABLES where table_type='view' and TABLE_SCHEMA=""'"$1"'") for view in $list_views do $MYSQL_BIN/mysqldump $user_identify --no-create-db --no-data $1 $view >> all_views_DB_$1_$DUMPTIME.sql done #dump function ,triger ,events $MYSQL_BIN/mysqldump -F -R -E $user_identify --no-create-db --no-create-info --no-data $1 >> all_views_DB_$1_$DUMPTIME.sql #create new databases; $MYSQL_BIN/mysql $user_identify -e "create database $2" list_table=$($MYSQL_BIN/mysql $user_identify -Nse "select table_name from information_schema.TABLES where table_type='base table' and TABLE_SCHEMA=""'"$1"'") for table in $list_table do $MYSQL_BIN/mysql $user_identify -e "rename table $1.$table to $2.$table" done #import views,function ,triger ,events $MYSQL_BIN/mysql $user_identify $2 < all_views_DB_$1_$DUMPTIME.sql

#remove old database
$MYSQL_BIN/mysql $user_identify -e "drop database $1"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM