Risposte:
INSERT INTO TARGET_TABLE SELECT * FROM SOURCE_TABLE;
EDIT: oppure se le tabelle hanno strutture differenti puoi anche:
INSERT INTO TARGET_TABLE (`col1`,`col2`) SELECT `col1`,`col2` FROM SOURCE_TABLE;
EDIT: per vincolare questo ..
INSERT INTO TARGET_TABLE (`col1_`,`col2_`) SELECT `col1`,`col2` FROM SOURCE_TABLE WHERE `foo`=1
Se la tabella non esiste, puoi crearne una con lo stesso schema in questo modo:
CREATE TABLE table2 LIKE table1;
Quindi, per copiare i dati su:
INSERT INTO table2 SELECT * FROM table1
SELECT * INTO newTable FROM sourceTable
in w3school , perché non funziona inMySQL
SELECT ... INTO
scopo di esportare una tabella in un file di output o in variabili; non direttamente in una tabella. Vedi dev.mysql.com/doc/refman/5.7/en/select-into.html
Se table1 è grande e non vuoi bloccarlo per la durata del processo di copia, puoi invece eseguire un dump-and-load:
CREATE TABLE table2 LIKE table1;
SELECT * INTO OUTFILE '/tmp/table1.txt' FROM table1;
LOAD DATA INFILE '/tmp/table1.txt' INTO TABLE table2;
show processlist
, non sono riuscito a vedere alcuna query in esecuzione. Non sono sicuro di quale sia il problema.
Se vuoi creare e copiare il contenuto in una sola ripresa, usa semplicemente SELEZIONA:
CREA TABELLA new_tbl SELEZIONA * DA orig_tbl;
Questo ha funzionato per me. È possibile rendere l'istruzione SELECT più complessa, con le clausole WHERE e LIMIT.
Prima duplica la tabella di grandi dimensioni (senza i dati), esegui la query seguente e quindi tronca la tabella più grande.
INSERT INTO table_small (SELECT * FROM table_large WHERE column = 'value' LIMIT 100)
Super semplice. :-)
CREATE TABLE target_table SELECT * FROM source_table;
Crea semplicemente una nuova tabella con la stessa struttura della tabella di origine e copia anche tutte le righe da source_table a target_table.
CREATE TABLE target_table SELECT * FROM source_table WHERE condition;
Se avete bisogno di alcune righe da copiare in target_table, quindi applicare una condizione interna in cui la clausola
Prova questo. Funziona bene nel mio Oracle 10g,
CREATE TABLE new_table
AS (SELECT * FROM old_table);