今天同事讓幫忙把線上的資料庫重新命名。恩?資料庫重新命名?這種需求的概率小之又小,今天居然還真給碰到了。
表重名的話是rename table old_table to new_table; so,庫的重新命名最簡單快捷的辦法是 rename old_db to new_db麼? 隨便建了個測試庫test,試著執行了一下臆想的rename命令,好吧,不行。搜了一下文件才發現,原來早期mysql版本(5.1.7)中是有過這個命令的,後來出於安全考慮又在mysql 5.1.23中移除了。。。
1.若庫中所有表為myisam引擎,則可改庫對應的資料夾的名字
(現如今這種可能性幾乎沒有,而且該方法需要停機,不太實際)
關閉mysql server:
sudo /etc/init.d/mysql stop
改目錄名:
cd /data/mysql; mv old_db new_db;
開啟mysql server
sudo /etc/init.d/mysql start
2.重新命名舊庫下邊的所有表
create databases new_db;
rename table old_db.table1 to new_db.table1,old_db.table2 to new_db.table2,...;
drop database old_db;
3.建新庫,使用mysqldump工具匯出老庫資料並匯入新庫
mysqldump -uuser -ppass -hhost -pport--single-transaction old_db >old_db.sql
mysql -uuser -ppass -hhost -pport -e "create database new_db"
mysql -uuser -ppass -hhost -pport new_db < old_db.sql
mysql -uuser -ppass -hhost -pport -e "drop database old_db"
其中方法2中表比較多的情況下,乙個個寫這些名稱未免太痛苦了,可用shell指令碼或者儲存過程來完成
#!/bin/bash
mysqlconn=" mysql -uuser -ppass -hhost -pport 」 old_db=」old_db 」 new_db=」new_db 」 $mysqlconn -e 「create database $new_db」 params=$($mysqlconn -n -e 「select table_name from information_schema.tables where table_schema=』$old_db』」) for name in $params; do $mysqlconn -e 「rename table $old_db.$name to $new_db.$name」; done; $mysqlconn -e 「drop database $old_db」
MySQL中資料庫重新命名
今天同事讓幫忙把線上的資料庫重新命名。恩?資料庫重新命名?這種需求的概率小之又小,今天居然還真給碰到了。表重名的話是rename table old table to new table so,庫的重新命名最簡單快捷的辦法是 rename old db to new db麼?隨便建了個測試庫test...
mysql資料庫重新命名
mysql 1.4以前 rename database old name to new name 高於1.4就沒這個命令了,那怎麼辦呢?把原來的庫匯出來,然後刪掉。再新建新名字的庫,然後把匯出的資料匯入進去。獲取刪除資料庫表sql的命令 select concat drop table table ...
Sql資料庫重新命名
1.查詢出當前連線然後將其關閉 select spid from master.dbo.sysprocesses where dbid db id 資料庫名 db id donet 如spid 值為 52.2.執行 kill 52 3.修改資料庫名 exec sp dboption old db n...