Difference between revisions of "Renaming MySQL tables and databases"
m (→Renaming tables) |
(note - backup first) |
||
Line 1: | Line 1: | ||
{{procedure}} | {{procedure}} | ||
+ | |||
+ | {{h|Note that you should back up your databases before doing these procedures as anything typed incorrectly could result in lost or corrupted data!}} | ||
== Duplicating a database == | == Duplicating a database == |
Revision as of 22:40, 4 October 2012
Renaming MySQL tables and databases Organic Design procedure |
Note that you should back up your databases before doing these procedures as anything typed incorrectly could result in lost or corrupted data!
Duplicating a database
This example duplicates a database called "DB_A" to "DB_B", to rename you'd also drop the original database after successfully duplicating it.
First log in to MySQL and create a new empty database for the target name
Then quit from MySQL and export the source database to a temporary file, and import it into the new database. I prefer to do this as two separate commands so that we can use interactive passwords and avoid them being written to history.
Renaming tables
Renaming one or two tables is simple, just log in to SQL and use the following syntax:
But usually we need to rename forty or fifty tables because we're usually changing the table-prefix of all the tables in an application like MediaWiki or Wordpress. To do this we can output the list of tables we want to change with SHOW TABLES, and then use a text editor (one that has regular expressions like Geany) to reformat the list into a RENAME TABLE command that we'll paste back into the MySQL command line. First log in to MySQL, select the database containing the tables and list them as follows (in this example we're going to change a prefix from foo_ to bar_.
Then select and copy the table list and paste into your text editor, you should have something like the following (I've omitted most tables to save space). Note that you only want the lines that have a table name pasted into the editor, not the table headings or separator/closing bars.
Then you can use the following regular expression (i.e. make sure "use regular expressions" is ticked) to convert the list into the appropriate format.
The search expression is:
and the replacement expression is:
- Depending on your editor, you may need to use $1 and $2 or \\1, \\2 etc, check your manual, this is written for Geany users.
Now you should have the following text in the editor:
Then it's a simple matter to replace the newline characters (\n) with commas (,) and prepend the whole thing with RENAME TABLE. Make sure you have a semicolon (;) and no comma on the end of the list.
You can then paste this whole command into the MySQL console to do the renaming in one go.