Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да преименувате база данни в MySQL

В някои случаи може да е желателно бързо да се промени името на MySQL база данни. Докато съществуваше просто RENAME DATABASE команда в по-стари версии на MySQL, която е предназначена да изпълни тази задача, RENAME DATABASE оттогава е премахнат от всички по-нови версии, за да се избегнат рискове за сигурността.

Вместо това ще разгледаме накратко няколко незадължителни методи, които могат да се използват за бързо и безопасно преименуване на вашата MySQL база данни.

Изхвърляне и повторно импортиране

Когато работите с относително малка база данни, най-бързият метод обикновено е да използвате mysqldump shell, за да създадете изхвърлено копие на цялата база данни, след което импортирайте всички данни в новосъздадената база данни с правилното име.

Започнете с издаване на следния mysqldump команда от подканата на вашата обвивка, като замените подходящото username , password и oldDbName стойности. mysqldump се използва за създаване на физически резервни копия на база данни, така че можем да използваме това копие, за да импортираме данните обратно в нова база данни.

$ mysqldump -u username -p"password" -R oldDbName > oldDbName.sql

Използваме -p флаг, непосредствено последван от нашата парола, за да се свържете с базата данни (без интервал между тях) и да избегнете подкани за въвеждане на парола при издаване на тези команди. Не забравяйте да оставите заобикалящите цитати, защото паролите с уникални знаци в противен случай могат да причинят проблеми с изпълнението. -R флагът също е важен и казва на mysqldump да копирате съхранени процедури и функции заедно с нормалните данни от базата данни.

След това използвайте mysqladmin команда за създаване на нова база данни:

$ mysqladmin -u username -p"password" create newDbName

И накрая, със създадената нова база данни, използвайте mysql за да импортирате дъмп файла, който създадохме в новата база данни.

$ mysql -u username -p"password" newDbName < oldDbName.sql

Три основни команди и вашата нова база данни е създадена. След като потвърдите, че всичко е според предназначението, можете да продължите с премахването на старата база данни.

Преименуване на таблици с InnoDB

Ако използвате MySQL версия 5.5 (или по-нова), вероятно използвате механизма за съхранение InnoDB, което прави задачата за преименуване на бази данни доста проста.

Накратко, можете да използвате RENAME TABLE команда в подканата на MySQL, за да промените ефективно името на базата данни на конкретна таблица, като се запази името на таблицата непокътнато. Това обаче изисква базата данни с новото име вече да съществува, така че започнете със създаване на нова база данни с помощта на mysqladmin shell команда, както се вижда по-горе.

Например, ако вече имаме catalog база данни, която искаме да преименуваме на library , първо ще създадем новата library база данни:

$ mysqladmin -u username -p"password" create library

Сега се свържете с mysql подканете и издадете следния MySQL RENAME TABLE изявление за таблица по ваш избор:

mysql> RENAME TABLE catalog.books TO library.books;

Току-що преместихме всички books таблица от catalog база данни към нашата нова library база данни. Тази команда може да се изпълни ръчно за всички съответни таблици, както желаете, или можем да опростим задачата с шел скрипт, както се вижда по-долу.

Използване на команден скрипт на Shell

За всички бази данни с изключение на най-малките, ръчно издаване на RENAME TABLE командите за всяка таблица няма да бъдат много практични или ефективни, но за щастие можем да използваме проста команда на обвивката, използвайки mysql помощна програма, за да прегледате всички таблици в нашата стара база данни и да ги преименувате, като по този начин ги преместите в новата база данни.

Това е основната структура на командата:

$ mysql -u dbUsername -p"dbPassword" oldDatabase -sNe 'show tables' | while read table; do mysql -u dbUsername -p"dbPassword" -sNe "RENAME TABLE oldDatabase.$table TO newDatabase.$table"; done

По този начин, за нашия преход от стария catalog база данни към новата library база данни, бихме променили изявлението, както следва:

$ mysql -u dbUsername -p"dbPassword" catalog -sNe 'show tables' | while read table; do mysql -u dbUsername -p"dbPassword" -sNe "RENAME TABLE catalog.$table TO library.$table"; done

Добавихме и няколко флага към нашите команди:

  • -s е флагът за silent mode така че има по-малко изход към обвивката.
  • -N предотвратява извеждането на имена на колони от резултатите.
  • -e обозначава израза, който следва -e флагът трябва да се изпълни след това обвивката е изключена. Това означава изразите 'show tables' и "RENAME TABLE catalog.$table TO library.$table" се изпълняват като нормални SQL оператори, както желаете.

Това е всичко. Вашата MySQL база данни вече е ефективно преименувана.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на ScrollableResults на Hibernate за бавно четене на 90 милиона записа

  2. Извличане на данни от MySQL база данни в html падащ списък

  3. Моят PDO изявление не работи

  4. Открийте дали стойността е число в MySQL

  5. Има ли MySQL опция/функция за проследяване на историята на промените в записи?