Tenha muito cuidado ao usar isso sob carga e com alta simultaneidade. Acabei de me queimar usando isso em escala, onde criamos cerca de 50 tabelas diferentes baseadas na mesma tabela de origem, ao mesmo tempo em que inserimos na tabela de origem outros processos. Basicamente, causou um colapso maciço de bloqueio e teve que reiniciar o MySQL.
Mark B
6
Uhm, OP está confuso? Esta é uma resposta grosseiramente errada à pergunta, se prestarmos atenção ao título e à ênfase na pergunta "... sem copiar os dados ..." A resposta da RCNell é a mais votada com razão. Não sei por que este foi aceito. Apenas dizendo'.
precisa saber é
421
Experimentar
CREATETABLE foo LIKE bar;
para que as chaves e os índices também sejam copiados.
Essa é uma resposta melhor, pois ela também copia os índices!
Chaitan
2
É muito melhor, mas ainda não copia chaves estrangeiras.
Josef Sábl
@RCNeil, também CREATE TABLE new_tbl LIKE orig_tbl;copia privilégios? Ou eles devem ser copiados manualmente?
Pacerier
2
Provavelmente porque esta resposta veio quatro anos mais tarde do que o marcado como correta
pythonian29033
1
@ Pierre-OlivierVares O texto da documentação não é diretamente relevante para a resposta real. O texto da resposta é conciso ao mostrar como fazer a pergunta, enquanto o link da documentação fornece apenas um contexto adicional. Como tal, inchar a resposta com o texto da documentação não é útil.
precisa saber é o seguinte
27
SHOW CREATETABLE bar;
você receberá uma instrução create para essa tabela, editará o nome da tabela ou qualquer outra coisa que desejar e, em seguida, executará.
Isso permitirá que você copie os índices e também ajuste manualmente a criação da tabela.
Você também pode executar a consulta em um programa.
Como você pode converter show create table barem uma declaração executável dinamicamente?
Pacerier 02/02
o resultado fornecido por show create table barjá é executável; se o script tiver permissão para criar tabelas, você poderá analisá-lo e executar também as instruções alter table.
Timo Huovinen
create table...não copiará índices. esta resposta é a melhor opção
foo
ebar
são variáveis arbitrárias e sem sentido , como Alice e Bob .Respostas:
Experimentar:
Ou:
fonte
select * into foo from bar where 1=0
create table NewTable like OldTable
seja uma opção para você. Link copiado da resposta excluída.Experimentar
para que as chaves e os índices também sejam copiados.
Documentação
fonte
CREATE TABLE new_tbl LIKE orig_tbl;
copia privilégios? Ou eles devem ser copiados manualmente?você receberá uma instrução create para essa tabela, editará o nome da tabela ou qualquer outra coisa que desejar e, em seguida, executará.
Isso permitirá que você copie os índices e também ajuste manualmente a criação da tabela.
Você também pode executar a consulta em um programa.
fonte
show create table bar
em uma declaração executável dinamicamente?show create table bar
já é executável; se o script tiver permissão para criar tabelas, você poderá analisá-lo e executar também as instruções alter table.create table...
não copiará índices. esta resposta é a melhor opçãoDeseja apenas clonar a estrutura da tabela:
Também deseja copiar os dados:
fonte