Eu sou novo no MySQL. Eu gostaria de copiar o conteúdo de uma tabela para outra tabela no mesmo banco de dados. Basicamente, gostaria de inserir em uma tabela de outra tabela. Existe uma maneira fácil de fazer isso?
118
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:
Então, para copiar os dados:
fonte
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.htmlSe 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:
fonte
show processlist
, não consegui ver nenhuma consulta em execução. Não tenho certeza de qual é o problema.Isso funcionou para mim,
CREATE TABLE newtable LIKE oldtable;
Replica a nova tabela com a tabela antiga
INSERT newtable SELECT * FROM oldtable
;Copia todos os dados da linha para a nova tabela.
Obrigado
fonte
Se você deseja criar e copiar o conteúdo em uma única cena, basta usar o SELECT:
fonte
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.
Super simples. :-)
fonte
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.
Se você precisar que algumas linhas sejam copiadas para target_table, aplique uma condição dentro da cláusula where
fonte
Experimente isso. Funciona bem no meu Oracle 10g,
fonte