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?

Author: Alex S, 2009-08-03

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)
 119
Author: coderhs, 2018-02-23 11:20:19

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.

 77
Author: , 2009-08-03 06:51:26

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

 22
Author: Dimo Boyadzhiev, 2018-10-26 12:59:17

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.

 11
Author: ChssPly76, 2009-08-03 02:28:11

Que tal

CREATE TABLE sample_table_copy AS (SELECT * FROM sample_table WHERE 1 = 2)

Postgresql.org resposta

 6
Author: picmate 涅, 2015-04-30 18:08:43