Je suis nouveau sur MySQL. Je voudrais copier le contenu d'une table dans une autre table de la même base de données. Fondamentalement, je voudrais insérer dans une table d'une autre table. Y a-t-il un moyen facile de faire cela?
INSERT INTO TARGET_TABLE SELECT * FROM SOURCE_TABLE;
EDIT: ou si les tables ont des structures différentes, vous pouvez aussi:
INSERT INTO TARGET_TABLE (`col1`,`col2`) SELECT `col1`,`col2` FROM SOURCE_TABLE;
EDIT: pour contraindre cela ..
INSERT INTO TARGET_TABLE (`col1_`,`col2_`) SELECT `col1`,`col2` FROM SOURCE_TABLE WHERE `foo`=1
Si la table n'existe pas, vous pouvez en créer une avec le même schéma, comme ceci:
CREATE TABLE table2 LIKE table1;
Ensuite, pour copier les données sur:
INSERT INTO table2 SELECT * FROM table1
Si la table 1 est volumineuse et que vous ne souhaitez pas la verrouiller pendant le processus de copie, vous pouvez effectuer un dump-and-load à la place:
CREATE TABLE table2 LIKE table1;
SELECT * INTO OUTFILE '/tmp/table1.txt' FROM table1;
LOAD DATA INFILE '/tmp/table1.txt' INTO TABLE table2;
Si vous voulez créer et copier le contenu en un seul coup, utilisez simplement le bouton SELECT:
CREATE TABLE new_tbl SELECT * FROM orig_tbl;
Cela a fonctionné pour moi
CREATE TABLE newtable LIKE oldtable;
Réplique newtable avec l'ancienne table
INSERT newtable SELECT * FROM oldtable
;
Copie toutes les données de ligne dans la nouvelle table.
Merci
Cela a fonctionné pour moi. Vous pouvez rendre l'instruction SELECT plus complexe avec les clauses WHERE et LIMIT.
Commencez par dupliquer votre grande table (sans les données), exécutez la requête suivante, puis tronquez la plus grande table.
INSERT INTO table_small (SELECT * FROM table_large WHERE column = 'value' LIMIT 100)
Super simple. :-)