Copier une table MySQL
Si nous devons copier complètement une table de données MySQL, y compris la structure de la table, les index, les valeurs par défaut, etc.
Si vous utilisez uniquement la commandeCREATE TABLE ... SELECT, cela ne peut pas être réalisé.
Ce chapitre présentera comment copier complètement une table de données MySQL. Les étapes sont les suivantes :
- Utilisez la commandeSHOW CREATE TABLEpour obtenir l'instruction CREATE TABLE (CREATE TABLE), qui contient la structure de la table d'origine, les index, etc.
- Copiez l'instruction SQL affichée par la commande suivante, modifiez le nom de la table de données, puis exécutez l'instruction SQL. Grâce à la commande ci-dessus, vous copierez complètement la structure de la table de données.
- Si vous souhaitez copier le contenu de la table, vous pouvez utiliser l'instruction INSERT INTO ... SELECT pour y parvenir.
Exemple
Essayez l'exemple suivant pour copier la table example_tbl.
Étape 1 :
Obtenez la structure complète de la table de données.
mysql> SHOW CREATE TABLE example_tbl \G;
*************************** 1. row ***************************
Table: example_tbl
Create Table: CREATE TABLE `example_tbl` (
`example_id` int(11) NOT NULL auto_increment,
`example_title` varchar(100) NOT NULL default '',
`example_author` varchar(40) NOT NULL default '',
`submission_date` date default NULL,
PRIMARY KEY (`example_id`),
UNIQUE KEY `AUTHOR_INDEX` (`example_author`)
) ENGINE=InnoDB
1 row in set (0.00 sec)
ERROR:
No query specified
Étape 2 :
Modifiez le nom de la table de données dans l'instruction SQL, puis exécutez l'instruction SQL.
mysql> CREATE TABLE `clone_tbl` ( -> `example_id` int(11) NOT NULL auto_increment, -> `example_title` varchar(100) NOT NULL default '', -> `example_author` varchar(40) NOT NULL default '', -> `submission_date` date default NULL, -> PRIMARY KEY (`example_id`), -> UNIQUE KEY `AUTHOR_INDEX` (`example_author`) -> ) ENGINE=InnoDB; Query OK, 0 rows affected (1.80 sec)
Étape 3 :
Après avoir terminé la deuxième étape, vous créerez une nouvelle table clone nommée clone_tbl dans la base de données. Si vous souhaitez copier les données de la table de données, vous pouvez utiliser INSERT INTO... SELECT instruction pour y parvenir.
mysql> INSERT INTO clone_tbl (example_id,
-> example_title,
-> example_author,
-> submission_date)
-> SELECT example_id,example_title,
-> example_author,submission_date
-> FROM example_tbl;
Query OK, 3 rows affected (0.07 sec)
Records: 3 Duplicates: 0 Warnings: 0
Après avoir effectué les étapes ci-dessus, le contenu de la table sera complètement copié, y compris la structure et les données de la table.
Utilisation de la commande mysqldump
La commande mysqldump peut être utilisée pour sauvegarder et restaurer des bases de données MySQL.
Si vous souhaitez copier une seule table, vous pouvez utiliser mysqldump pour exporter la structure et les données de cette table, puis les importer dans une nouvelle base de données ou une nouvelle table.
Voici un exemple simple.
Sauvegarder les données de la table :
mysqldump -u username -p dbname old_table > old_table_dump.sql
Cela exportera la structure et les données de la table nommée old_table vers un fichier SQL nommé old_table_dump.sql.
Vous devez fournir le nom d'utilisateur et le mot de passe MySQL, et remplacer username, dbname et old_table par des valeurs réelles.
Restaurer dans une nouvelle base de données :
mysql -u username -p new_dbname < old_table_dump.sql
Cela créera une table nommée old_table dans la nouvelle base de données (new_dbname), et importera la structure et les données précédemment exportées dans la nouvelle table.
Autres extensions