Como copiar, clonar ou duplicar os dados, estrutura e índices de uma tabela MySQL para uma nova?
Isto é o que eu encontrei até agora.
Isso copiará os dados e a estrutura, mas não os índices:
create table {new_table} select * from {old_table};
Isso copiará a estrutura e os índices, mas não os dados:
create table {new_table} like {old_table};
Respostas:
Para copiar com índices e gatilhos, faça estas 2 consultas:
Para copiar apenas estrutura e dados, use este:
Eu perguntei isso antes:
Copie uma tabela MySQL incluindo índices
fonte
select *
será executado em tabelas enormes.AUTO_INCREMENT
valor.Além da solução acima, você pode usá
AS
-la em uma linha.fonte
create table {new_table} select * from {old_table};
não é uma resposta e não fornece novas informações.Maneira MySQL:
fonte
Vá para phpMyAdmin e selecione sua tabela original e selecione a guia " Operações " na área " Copiar tabela para (database.table) ". Selecione o banco de dados onde deseja copiar e adicione um nome para sua nova tabela.
fonte
Encontrei a mesma situação e a abordagem adotada foi a seguinte:
SHOW CREATE TABLE <table name to clone>
: Isso fornecerá aCreate Table
sintaxe da tabela que você deseja clonarCREATE TABLE
consulta alterando o nome da tabela para clonar a tabela.Isso criará uma réplica exata da tabela que você deseja clonar junto com os índices. A única coisa que você precisa é renomear os índices (se necessário).
fonte
A melhor maneira de duplicar uma tabela é usando apenas
DDL
instrução Dessa forma, independentemente do número de registros na tabela, você pode executar a duplicação instantaneamente.Meu objetivo é:
Isso evita a
INSERT AS SELECT
afirmação de que, no caso de tabela com muitos registros, pode levar tempo para ser executado.Sugiro também criar um procedimento PLSQL como o exemplo a seguir:
Tenha um bom dia! Alex
fonte
Expandindo esta resposta, pode-se usar um procedimento armazenado:
O que resultará em uma tabela duplicada chamada
tableName_20181022235959
Se chamada quandoresultados:
Implementação
fonte
Depois de experimentar a solução acima, criei meu próprio caminho.
Minha solução é um pouco manual e precisa de DBMS.
Primeiro, exporte os dados.
Segundo, abra os dados de exportação.
Terceiro, substitua o nome antigo da tabela pelo novo nome da tabela.
Quarto, altere todo o nome do acionador nos dados (eu uso o MySQL e ele mostra erro quando não altero o nome do acionador).
Quinto, importe seus dados SQL editados para o banco de dados.
fonte
Tente o seguinte:
Selecionei 4 colunas da tabela antiga e criei uma nova tabela.
fonte
PARA MySQL
PARA MSSQL Use
MyDatabase
:Este SQL é usado para copiar tabelas, aqui o conteúdo de oldCustomersTable será copiado para
newCustomersTable
.Verifique se
newCustomersTable
não existe no banco de dados.fonte