Estou tentando aprender a administração do PostgreSQL e comecei a aprender como usar a psqlferramenta de linha de comando.
Quando efetuo login psql --username=postgres, como faço para listar todos os bancos de dados e tabelas?
Eu tentei \d, de dS+mas nada está listado. Eu criei dois bancos de dados e algumas tabelas com o pgAdmin III, então eu sei que eles devem estar listados.
Se você quiser acessá-lo através da linha de comando, executepsql -l
Esse comentário deve ser definitivamente uma das principais respostas! Se você precisar de autenticação, também pode psql --username=postgres -l.
\listou \l: lista todos os bancos de dados
\dt: lista todas as tabelas no banco de dados atual
Você nunca verá tabelas em outros bancos de dados, essas tabelas não são visíveis. Você precisa se conectar ao banco de dados correto para ver suas tabelas (e outros objetos).
Para alternar bancos de dados:
Veja o manual sobre psql .
Você pode usar \c db_namepara se conectar a um determinado banco de dados.
\dtnão parece listar todas as tabelas no banco de dados atual (parece excluir aqueles que não são encontrados no search_path, pelo menos em 9.2)
\dt *.listará todas as tabelas em todos os esquemas, sem precisar modificar o caminho da pesquisa.
\ l + é o meu favorito - mostra também o uso do disco.
No Windows, posso listar os bancos de dados com este comando, psql -U username -lmas ele não funciona com a versão da barra.
Isso lista bancos de dados:
Isso lista tabelas no banco de dados atual
Você está certo, mas a pergunta era sobre os meta-comandos da ferramenta psql. \ dt é muito mais fácil do que digitar qualquer consulta.
Eu acho que essa é uma ótima resposta, pois pode ser executada a partir de uma linha de comando do Linux, em vez de precisar estar no interpretador psql, que às vezes trava para mim usando o ExtraPutty.
— Amor e paz - Joe Codeswell 16/15
Também salvou o meu dia. Para o meu caso em particular, estou adicionando WHERE table_schema = 'public'porque quero descartar apenas tabelas personalizadas.
— Renra 28/09
Se você iniciar o psql com o sinalizador -E, ele exibirá a consulta real quando você usar um meta-comando.
Esta é uma boa resposta. Embora o OP quisesse as metacommands, eu estava pesquisando no Google e isso me levou a essa pergunta.
No Postgresql, esses comandos do terminal listam os bancos de dados disponíveis
Ou o comando declarou mais simplesmente:
Esses comandos imprimem isso no terminal:
Esses são os bancos de dados disponíveis.
No PSQL esses comandos listam as tabelas disponíveis
Você precisa especificar um banco de dados antes de poder listar as tabelas nesse banco de dados.
Isso leva você a um terminal psql:
Use o comando que \dsignifica mostrar todas as tabelas, visualizações e sequências
Em seguida, para sair do terminal psql, digite \qe pressione enter. Ou Ctrl-Dfaz a mesma coisa. Estas são as tabelas nesse banco de dados.
\ d não lista apenas tabelas:\d[S+] list tables, views, and sequences
Para mim, esta é a resposta "correta" porque não exige que você já esteja conectado a um banco de dados existente.
\ltambém é uma abreviação de \list. Existem alguns comandos slash, que você pode listar no psql usando \?.
Para obter mais informações sobre o banco de dados e a lista de tabelas, faça o seguinte:
\l+ listar bancos de dados
\d+ para listar todas as tabelas no esquema search_path atual no banco de dados atual.
No pg_Admin, você pode simplesmente executar o seguinte em seu banco de dados atual e ele obterá todas as tabelas para o esquema especificado:
Isso fornecerá uma lista de todas as tabelas permanentes (geralmente as tabelas que você está procurando). Você pode obter apenas os nomes das tabelas se alterar o *curinga para apenas os table_name. O público table_schemaé o esquema padrão para a maioria dos bancos de dados, a menos que seu administrador tenha configurado um novo esquema.
Embora isso seja verdade, trata-se de um cliente diferente do que o OP perguntou.
Isso funcionou muito bem para mim e, embora meu caso de uso não fosse exatamente o que o OP solicitava, ele me ajudou a obter a lista de tabelas enquanto estava conectado via wrapper (em Julialang LibPQ.jl )
É possível que você tenha inserido as tabelas em um esquema que não esteja no seu caminho de pesquisa ou no padrão, ou seja, público e, portanto, as tabelas não serão exibidas usando \ dt. Se você usar um esquema chamado, digamos, dados, poderá corrigir isso executando,