Respostas:
INSERT INTO TARGET_TABLE SELECT * FROM SOURCE_TABLE;
EDITAR: ou se as tabelas tiverem estruturas diferentes, você também pode:
INSERT INTO TARGET_TABLE (`col1`,`col2`) SELECT `col1`,`col2` FROM SOURCE_TABLE;
EDITAR: para restringir isso ..
INSERT INTO TARGET_TABLE (`col1_`,`col2_`) SELECT `col1`,`col2` FROM SOURCE_TABLE WHERE `foo`=1
Se a tabela não existir, você pode criar uma com o mesmo esquema da seguinte maneira:
CREATE TABLE table2 LIKE table1;
Então, para copiar os dados:
INSERT INTO table2 SELECT * FROM table1
SELECT * INTO newTable FROM sourceTable
no w3school , por que ele não está funcionandoMySQL
SELECT ... INTO
serve para exportar uma tabela para um arquivo de saída ou para variáveis; não diretamente em uma mesa. Consulte dev.mysql.com/doc/refman/5.7/en/select-into.html
Se a tabela1 for grande e você não quiser bloqueá-la durante o processo de cópia, você pode fazer um dump-and-load em vez disso:
CREATE TABLE table2 LIKE table1;
SELECT * INTO OUTFILE '/tmp/table1.txt' FROM table1;
LOAD DATA INFILE '/tmp/table1.txt' INTO TABLE table2;
show processlist
, não consegui ver nenhuma consulta em execução. Não tenho certeza de qual é o problema.
Se você deseja criar e copiar o conteúdo em uma única cena, basta usar o SELECT:
CREATE TABLE new_tbl SELECT * FROM orig_tbl;
Isso funcionou para mim. Você pode tornar a instrução SELECT mais complexa, com cláusulas WHERE e LIMIT.
Primeiro duplique sua tabela grande (sem os dados), execute a consulta a seguir e trunque a tabela maior.
INSERT INTO table_small (SELECT * FROM table_large WHERE column = 'value' LIMIT 100)
Super simples. :-)
CREATE TABLE target_table SELECT * FROM source_table;
Ele apenas cria uma nova tabela com a mesma estrutura da tabela de origem e também copia todas as linhas de source_table para target_table.
CREATE TABLE target_table SELECT * FROM source_table WHERE condition;
Se você precisar que algumas linhas sejam copiadas para target_table, aplique uma condição dentro da cláusula where
Experimente isso. Funciona bem no meu Oracle 10g,
CREATE TABLE new_table
AS (SELECT * FROM old_table);