sql >> Database teknologi >  >> RDS >> Mysql

Sådan omdøbes en database i MySQL

I nogle tilfælde kan det være ønskeligt hurtigt at ændre navnet på en MySQL-database. Mens der plejede at eksistere en simpel RENAME DATABASE kommando i ældre versioner af MySQL, som var beregnet til at udføre denne opgave, RENAME DATABASE er siden blevet fjernet fra alle nyere versioner for at undgå sikkerhedsrisici.

I stedet vil vi kort udforske en håndfuld valgfri metoder, der kan bruges til hurtigt og sikkert at omdøbe din MySQL-database.

Dumping og genimport

Når du arbejder med en relativt lille database, er den hurtigste metode typisk at bruge mysqldump shell-kommando for at oprette en dumpet kopi af hele databasen, og importer derefter alle data til den nyoprettede database med det rigtige navn.

Begynd med at udstede følgende mysqldump kommando fra din shell-prompt, der erstatter det relevante username , password og oldDbName værdier. mysqldump bruges til at lave fysiske sikkerhedskopier af en database, så vi kan bruge denne kopi til at importere data tilbage til en ny database.

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

Vi bruger -p flag umiddelbart efterfulgt af vores adgangskode for at oprette forbindelse til databasen (uden mellemrum) og undgå adgangskodeprompter, når du udsteder disse kommandoer. Sørg for at forlade de omkringliggende citater, fordi adgangskoder med unikke tegn ellers kan forårsage udførelsesproblemer. -R flag er også vigtigt og fortæller mysqldump at kopiere lagrede procedurer og funktioner sammen med de normale data fra databasen.

Brug derefter mysqladmin kommando for at oprette en ny database:

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

Til sidst, med den nye database oprettet, skal du bruge mysql for at importere den dumpfil, vi oprettede, til den nye database.

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

Tre grundlæggende kommandoer og din nye database er blevet oprettet. Når du har bekræftet, at alt er efter hensigten, kan du fortsætte med at fjerne den gamle database.

Omdøbning af tabeller med InnoDB

Hvis du bruger MySQL version 5.5 (eller nyere), bruger du sandsynligvis InnoDB-lagringsmotoren, som gør opgaven med at omdøbe databaser ret enkel.

Kort sagt kan du bruge RENAME TABLE kommando i en MySQL-prompt for effektivt at ændre databasenavnet af en bestemt tabel, mens tabelnavnet bevares intakt. Det kræver dog, at databasen med det nye navn allerede eksisterer, så start med at oprette en ny database ved hjælp af mysqladmin shell-kommando som set ovenfor.

For eksempel, hvis vi allerede har et catalog database, som vi ønsker at omdøbe til library , ville vi først oprette det nye library database:

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

Forbind nu til mysql prompt og udstede følgende MySQL RENAME TABLE erklæring for en tabel efter eget valg:

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

Vi har lige flyttet hele books tabel fra catalog database til vores nye library database. Denne kommando kan udføres manuelt for alle relevante tabeller som ønsket, eller vi kan forenkle opgaven med et shell-script som vist nedenfor.

Brug af et Shell-kommandoscript

For alle undtagen de mindste databaser, manuel udstedelse af RENAME TABLE kommandoer for hver tabel vil ikke være særlig praktisk eller effektiv, men heldigvis kan vi bruge en simpel shell-kommando ved hjælp af mysql værktøj til at gennemgå alle tabellerne i vores gamle database og omdøbe dem, og dermed flytte dem til den nye database.

Dette er den grundlæggende struktur for kommandoen:

$ 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

Således for vores flytning fra det gamle catalog database til det nye library database, vil vi ændre erklæringen som følger:

$ 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

Vi har også tilføjet et par flag til vores kommandoer:

  • -s er flaget for silent mode så der er mindre output til skallen.
  • -N forhindrer output af kolonnenavne fra resultaterne.
  • -e angiver sætningen, der følger -e flag skal udføres så er skallen afsluttet. Det betyder sætningerne 'show tables' og "RENAME TABLE catalog.$table TO library.$table" udføres som normale SQL-sætninger efter ønske.

Det er alt, hvad der er til det. Din MySQL-database er nu effektivt omdøbt.


  1. problem med to_date funktion med sysdate

  2. Sådan gemmer du Java Date til Mysql datetime med JPA

  3. Hvad er brugen af ​​DECODE-funktionen i SQL?

  4. Sådan vælger du sammenligning af to kolonner som én kolonne i Oracle