如何修改MySQL資料庫名稱

18141908802發表於2020-09-29

比如資料庫名稱 old_db想改名為 new_db

  • MySQL修改資料庫名稱比較麻煩,不支援直接修改,需要通過其它方式間接達到修改資料庫名稱的目的。
  • 在 MySQL 5.1.23 之前的舊版本中,我們可以使用  RENAME DATABASE 來重新命名資料庫,但此後版本,因為安全考慮,刪掉了這一條命令。

方法一:先匯出資料,再匯入資料

當資料庫體積比較小時,最快的方法是使用 mysqldump命令來建立整個資料庫的轉存副本,然後新建資料庫,再把副本匯入到新資料庫中。

1.1 先建立新庫:

create database new_db;

1.2 使用 mysqldump匯出資料:

mysqldump -uroot -p123456 --set-gtid-purged=OFF old_db > /tmp/old_db.sql僅是做普通的本機備份恢復時,可以新增--set-gtid-purged=OFF作用是在備份時候不出現GTID資訊

1.3 匯入資料到新庫:

mysql -uroot -p123456 new_db < /tmp/old_db.sql

方法二:通過修改表名稱,間接實現修改資料庫名稱

使用此方法實際上將所有表從一個資料庫移動到另一個資料庫,這實際上重新命名了該資料庫(MySQL沒有單個語句的操作),移動後原始資料庫繼續存在,但是裡面沒有表。

== RENAME TABLE==: https://dev.mysql.com/doc/refman/5.7/en/rename-table.html

2.1 先建立新庫:

create database new_db;

2.2 使用 RENAME TABLE命令修改表名,將表移動到新的庫裡:

rename table old_db.tb to new_db.tb;

2.3 完成後刪除舊庫:

drop database old_db;

2.4 如何使用 shell指令碼來批量修改表名:

  • 當庫下表比較多的時候,用上面方法純手動也不現實,好在 linux下可以用 shell指令碼來批處理。
  • 附上一個 shell指令碼批量修改表名稱。
#!/bin/bashmysql -uroot -p123456 -e 'create database if not exists new_db;'list_table=$(mysql -uroot -p123456 -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='old_db'")for table in $list_tabledo    mysql -uroot -p123456 -e "rename table old_db.$table to new_db.$table"done
mysql登陸命令列引數
  • -e, —execute=name  # 執行mysql的sql語句
  • -N, —skip-column-names  # 不顯示列資訊
  • -s, —silent  # 一行一行輸出,中間有tab分隔


轉轉連線  http://blog.itpub.net/69982604/viewspace-2724260/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31429259/viewspace-2725000/,如需轉載,請註明出處,否則將追究法律責任。

相關文章