Comment copier, cloner ou dupliquer les données, la structure et les index d'une table MySQL vers une nouvelle?
C'est ce que j'ai trouvé jusqu'à présent.
Cela copiera les données et la structure, mais pas les indices:
create table {new_table} select * from {old_table};
Cela copiera la structure et les indices, mais pas les données:
create table {new_table} like {old_table};
Réponses:
Pour copier avec des index et des déclencheurs, faites ces 2 requêtes:
Pour copier simplement la structure et les données, utilisez celui-ci:
J'ai déjà posé cette question:
Copiez une table MySQL avec des index
la source
select *
fonctionnera dans les tables énormes.AUTO_INCREMENT
valeur.En dehors de la solution ci-dessus, vous pouvez utiliser
AS
pour le faire en une seule ligne.la source
create table {new_table} select * from {old_table};
pas de réponse et ne donne aucune nouvelle information.Façon MySQL:
la source
Accédez à phpMyAdmin et sélectionnez votre table d'origine, puis sélectionnez l' onglet " Opérations " dans la zone " Copier la table vers (database.table) ". Sélectionnez la base de données où vous souhaitez copier et ajoutez un nom pour votre nouvelle table.
la source
J'ai trouvé la même situation et l'approche que j'ai adoptée était la suivante:
SHOW CREATE TABLE <table name to clone>
: cela vous donnera laCreate Table
syntaxe de la table que vous souhaitez clonerCREATE TABLE
requête en modifiant le nom de la table pour cloner la table.Cela créera une réplique exacte de la table que vous souhaitez cloner avec les index. La seule chose dont vous avez alors besoin est de renommer les index (si nécessaire).
la source
La meilleure façon de dupliquer une table utilise uniquement l'
DDL
instruction. De cette façon, indépendamment du nombre d'enregistrements dans la table, vous pouvez effectuer la duplication instantanément.Mon but est:
Cela évite l'
INSERT AS SELECT
affirmation selon laquelle, dans le cas d'une table avec beaucoup d'enregistrements, l'exécution peut prendre du temps.Je suggère également de créer une procédure PLSQL comme l'exemple suivant:
Bonne journée! Alex
la source
En développant cette réponse, on pourrait utiliser une procédure stockée:
Ce qui se traduira par une table en double appelée
tableName_20181022235959
Si appelé lorsquerésultats:
la mise en oeuvre
la source
Après avoir essayé la solution ci-dessus, je trouve ma propre voie.
Ma solution un peu manuelle et a besoin d'un SGBD.
Tout d'abord, exportez les données.
Ensuite, ouvrez les données d'exportation.
Troisièmement, remplacez l'ancien nom de table par un nouveau nom de table.
Quatrièmement, changez tout le nom du déclencheur dans les données (j'utilise MySQL et cela affiche une erreur lorsque je ne change pas le nom du déclencheur).
Cinquièmement, importez vos données SQL modifiées dans la base de données.
la source
Essaye ça :
J'ai sélectionné 4 colonnes de l'ancienne table et créé une nouvelle table.
la source
POUR MySQL
POUR UTILISATION MSSQL
MyDatabase
:Ce SQL est utilisé pour copier des tables, ici le contenu de oldCustomersTable sera copié
newCustomersTable
.Assurez-vous que le
newCustomersTable
n'existe pas dans la base de données.la source