Eu criei uma tabela no postgreSQL. Eu quero olhar para a instrução SQL usada para criar a tabela, mas não consigo descobrir.
Como obtenho a create table
instrução SQL para uma tabela existente no Postgres via linha de comando ou instrução SQL?
postgresql
Rajá
fonte
fonte
pg_dump mydb -t mytable --schema-only
.aschema
pelo nome do esquema real da tabela que você deseja despejar. Substituaatable
pelo nome real da tabela que você deseja despejar.pg_dump mydb -t '"TableName"' --schema-only
- caso contrário, pg_dump não reconhecerá o nome da tabela.Minha solução é efetuar login no banco de dados do postgres usando o psql com a opção -E da seguinte maneira:
No psql, execute os seguintes comandos para ver o sql que o postgres usa para gerar
a instrução da tabela de descrição:
Com base no sql ecoado após a execução desses comandos de descrição, consegui reunir
a seguinte função plpgsql:
Aqui está o uso da função:
E aqui está a instrução drop se você não deseja que essa função persista permanentemente:
fonte
NULL
para mim ... E como o esquema é tratado? Ele deve retornar instruções CREATE para tabelas com o nome especificado de todos os esquemas?Gere a instrução create table para uma tabela no postgresql a partir da linha de comando do linux:
Esta declaração gera a tabela create sql statement for me:
Explicação:
O pg_dump nos ajuda a obter informações sobre o próprio banco de dados.
-U
significa nome de usuário. Meu usuário do pgadmin não tem uma senha definida, portanto não preciso inserir uma senha. A-t
opção significa especificar para uma tabela.--schema-only
significa imprimir apenas dados sobre a tabela, e não os dados na tabela. Aqui está o comando exato que eu uso:fonte
Se você deseja encontrar a instrução create para uma tabela sem usar pg_dump, essa consulta pode funcionar para você (altere 'tablename' com o nome da tabela):
quando chamado diretamente do psql, é útil fazer:
Além disso, a função generate_create_table_statement neste encadeamento funciona muito bem.
fonte
pg_dump
. útil da mesma forma +1Dean Toader Apenas excelente! Eu modificaria um pouco seu código, para mostrar todas as restrições na tabela e possibilitar o uso da máscara regexp no nome da tabela.
Agora você pode, por exemplo, fazer a seguinte consulta
que resulta assim:
para cada tabela de usuário.
fonte
O método mais fácil que consigo pensar é instalar o pgAdmin 3 ( encontrado aqui ) e usá-lo para visualizar seu banco de dados. Irá gerar automaticamente uma consulta que criará a tabela em questão.
fonte
Se você quiser fazer isso para várias tabelas ao mesmo tempo, usei a opção -t várias vezes (demorei um pouco para descobrir por que a lista separada por vírgulas não estava funcionando). Além disso, pode ser útil enviar resultados para um arquivo externo ou canal para um servidor postgres em outra máquina
fonte
Modificações ainda mais baseadas na resposta do @vkkeeper. Possibilidade adicionada para consultar a tabela do esquema específico.
fonte
Aqui está uma versão de pouco melhorou shekwi 's consulta .
Ele gera a restrição de chave primária e pode lidar com tabelas temporárias:
Use o
table_name
parâmetro para especificar o nome da tabela.fonte
fonte
Esta é a variação que funciona para mim:
pg_dump -U user_viktor -h localhost unit_test_database -t floorplanpreferences_table --schema-only
Além disso, se você estiver usando esquemas, é claro que também precisará especificar isso:
pg_dump -U user_viktor -h localhost unit_test_database -t "949766e0-e81e-11e3-b325-1cc1de32fcb6".floorplanpreferences_table --schema-only
Você obterá uma saída que pode ser usada para criar a tabela novamente, basta executar essa saída no psql.
fonte
Uma solução simples, em SQL único puro. Você entendeu a idéia, pode estendê-la a mais atributos que gostaria de mostrar.
Resultado:
fonte
Aqui está uma única instrução que irá gerar o DDL para uma única tabela em um esquema especificado, incluindo restrições.
fonte
Como as outras respostas mencionadas, não há função integrada que faça isso.
Aqui está uma função que tenta obter todas as informações necessárias para replicar a tabela - ou comparar o ddl implementado e verificado.
Essa função gera:
exemplo
produz
fonte
No banco de dados pgadminIII >> esquemas >> tabelas >> clique com o botão direito do mouse em 'Sua tabela' >> scripts >> 'Selecione qualquer um (Criar, Inserir, Atualizar, Excluir ..)'
fonte
Aqui está uma consulta com algumas edições,
fonte