Copiar a estrutura da tabela para a nova tabela
, existe uma maneira de copiar a estrutura de uma tabela para uma nova tabela, sem dados, incluindo todas as chaves e restrições?
5 answers
Para uma cópia simples do esquema, use a cláusula similar.
CREATE TABLE new_table_name ( like old_table_name including all)
Bem, o mais próximo que podes chegar com o SQL é:
create table new (
like old
including defaults
including constraints
including indexes
);
Mas não vai copiar tudo. As coisas mais importantes que faltam são chaves estrangeiras. Também-gatilhos também não são copiados. Não tenho a certeza sobre outras coisas.
Outra maneira é despejar a estrutura da tabela, mudar o seu nome no despejo, e carregá-la novamente:
pg_dump -s -t old databases | sed 's/old/new/g' | psql
Mas cuidado, que tal sed simplista também vai mudar velho para novo em outros lugares (por exemplo, se você tem na sua coluna de tabela chamado "is_scolded" ele se tornará "is_scnewed").
A questão é antes: por que você precisa dele - porque para vários propósitos, eu usaria técnicas diferentes.
Para copiar uma tabela completamente, o formulário curto usando o comando TABLE também pode ser usado:
CREATE TABLE films2 AS
TABLE films
WITH NO DATA;
Mais detalhes aqui
Dê uma olhada empgAdmin - de longe a maneira mais fácil de fazer o que você quer.
Carregue com o botão direito na mesa, Scripts-Create.
Que tal
CREATE TABLE sample_table_copy AS (SELECT * FROM sample_table WHERE 1 = 2)