Respuestas:
INSERT INTO TARGET_TABLE SELECT * FROM SOURCE_TABLE;
EDITAR: o si las tablas tienen diferentes estructuras también puede:
INSERT INTO TARGET_TABLE (`col1`,`col2`) SELECT `col1`,`col2` FROM SOURCE_TABLE;
EDITAR: para restringir esto ...
INSERT INTO TARGET_TABLE (`col1_`,`col2_`) SELECT `col1`,`col2` FROM SOURCE_TABLE WHERE `foo`=1
Si la tabla no existe, puede crear una con el mismo esquema así:
CREATE TABLE table2 LIKE table1;
Luego, para copiar los datos:
INSERT INTO table2 SELECT * FROM table1
SELECT * INTO newTable FROM sourceTable
en w3school , por qué no funciona enMySQL
SELECT ... INTO
está destinado a exportar una tabla a un archivo de salida o variables; no directamente en una mesa. Ver dev.mysql.com/doc/refman/5.7/en/select-into.html
Si table1 es grande y no desea bloquearlo durante el proceso de copia, puede realizar un volcado y carga en su lugar:
CREATE TABLE table2 LIKE table1;
SELECT * INTO OUTFILE '/tmp/table1.txt' FROM table1;
LOAD DATA INFILE '/tmp/table1.txt' INTO TABLE table2;
show processlist
, no pude ver ninguna consulta en ejecución. No estoy seguro de cuál es el problema.
Si desea crear y copiar el contenido en una sola toma, simplemente use SELECT:
CREAR TABLA new_tbl SELECT * FROM orig_tbl;
Esto funcionó para mí. Puede hacer que la instrucción SELECT sea más compleja, con cláusulas WHERE y LIMIT.
Primero duplique su tabla grande (sin los datos), ejecute la siguiente consulta y luego trunque la tabla más grande.
INSERT INTO table_small (SELECT * FROM table_large WHERE column = 'value' LIMIT 100)
Super simple. :-)
CREATE TABLE target_table SELECT * FROM source_table;
Simplemente crea una nueva tabla con la misma estructura que la tabla de origen y también copia todas las filas de source_table en target_table.
CREATE TABLE target_table SELECT * FROM source_table WHERE condition;
Si necesita copiar algunas filas en target_table, aplique una condición dentro de la cláusula where
Prueba esto. Funciona bien en mi Oracle 10g,
CREATE TABLE new_table
AS (SELECT * FROM old_table);