Respostas:
Na psql
interface da linha de comandos,
Primeiro, escolha seu banco de dados
\c database_name
Em seguida, isso mostra todas as tabelas no esquema atual:
\dt
Programaticamente (ou a partir da psql
interface também, é claro):
SELECT * FROM pg_catalog.pg_tables;
As tabelas do sistema estão no pg_catalog
banco de dados.
\l
é o equivalente show databases
no MySQL. dt
≃ show tables
e l
≃show databases
\dt
é muito útil. Essa pg_catalog.pg_tables
é muito menos, pois parece agrupar tabelas internas em conjunto com as criadas pelo usuário para qualquer banco de dados ao qual você esteja conectado.
psql my_db_name
deve ser executado \dt
para funcionar. Quando eu corri psql
sem o nome de um banco de dados, recebi a mensagem "Nenhuma relação encontrada"
SELECT * FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema'
\c <DATABASE_NAME>
escolher seu banco de dados.
Faça login como superusuário:
sudo -u postgres psql
Você pode listar todos os bancos de dados e usuários por \l
comando ((listar outros comandos por \?
)).
Agora, se você quiser ver outros bancos de dados, poderá alterar usuário / banco de dados por \c
comando \c template1
, como , \c postgres postgres
e usar \d
, \dt
ou \dS
para ver tabelas / visualizações / etc.
(Para completar)
Você também pode consultar o esquema de informações (padrão SQL) :
SELECT
table_schema || '.' || table_name
FROM
information_schema.tables
WHERE
table_type = 'BASE TABLE'
AND
table_schema NOT IN ('pg_catalog', 'information_schema');
Você pode usar o terminal interativo Psql do PostgreSQL para mostrar tabelas no PostgreSQL.
1. Inicie o Psql
Geralmente você pode executar o seguinte comando para entrar no psql:
psql DBNAME USERNAME
Por exemplo, psql template1 postgres
Uma situação que você pode ter é: suponha que você efetue login como root e não se lembre do nome do banco de dados. Você pode simplesmente entrar primeiro no Psql executando:
sudo -u postgres psql
Em alguns sistemas, o comando sudo não está disponível, você pode executar um dos comandos abaixo:
psql -U postgres
psql --username=postgres
2. Mostrar tabelas
Agora no Psql você pode executar comandos como:
\?
listar todos os comandos\l
listar bancos de dados\conninfo
exibir informações sobre a conexão atual\c [DBNAME]
conectar ao novo banco de dados, por exemplo, \c template1
\dt
listar tabelas do esquema público\dt <schema-name>.*
listar tabelas de determinado esquema, por exemplo, \dt public.*
\dt *.*
listar tabelas de todos os esquemasSELECT * FROM my_table;
(Nota: uma instrução deve ser finalizada com ponto e vírgula ;
)\q
saia do psqlA execução do psql com o sinalizador -E fará eco à consulta usada internamente para implementar \ dt e similares:
sudo -u postgres psql -E
postgres=# \dt
********* QUERY **********
SELECT n.nspname as "Schema",
c.relname as "Name",
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as "Type",
pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','')
AND n.nspname <> 'pg_catalog'
AND n.nspname <> 'information_schema'
AND n.nspname !~ '^pg_toast'
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
**************************
Efetue login como superusuário para poder verificar todos os bancos de dados e seus esquemas: -
sudo su - postgres
Em seguida, podemos acessar o shell do postgresql usando o seguinte comando: -
psql
Agora você pode verificar toda a lista de bancos de dados usando o seguinte comando: -
\l
Se você deseja verificar os tamanhos dos bancos de dados, use também: -
\l+
pressione q
para voltar.
Depois de encontrar seu banco de dados agora, você pode conectar-se a esse banco de dados usando o seguinte comando: -
\c database_name
Uma vez conectado, você pode verificar as tabelas ou o esquema do banco de dados:
\d
Agora, para voltar ao uso do shell: -
q
Agora, para ver mais detalhes de uma determinada tabela, use: -
\d table_name
Para voltar ao postgresql_shell, pressione \q
.
E para retornar ao terminal pressione exit
.
Se você quiser ver apenas a lista de tabelas que criou, poderá apenas dizer:
\dt
Mas também temos PATTERN
quais ajudarão a personalizar as tabelas a serem exibidas. Para mostrar tudo, incluindo o pg_catalog
esquema, você pode adicionar *
.
\dt *
Se você fizer: \?
\ dt [S +] [PATTERN] tabelas de lista
use apenas ver tabelas
=> \dt
se quiser ver tabelas de esquema
=>\dt+
se você quiser ver tabelas de esquema específicas
=>\dt schema_name.*
+
com S
. O último (a letra) mostra tabelas de esquema. O +
simplesmente mostra informações extras.
Primeiro, conecte-se ao banco de dados usando o seguinte comando
\c database_name
E você verá esta mensagem - You are now connected to database database_name
. E eles executam o seguinte comando
SELECT * FROM table_name;
Em database_name e table_name, atualize com o banco de dados e o nome da tabela
Se você estiver usando o pgAdmin4 no PostgreSQL, poderá usar isso para mostrar as tabelas no seu banco de dados:
select * from information_schema.tables where table_schema='public';
Observe que \dt
sozinho listará as tabelas em público esquema do banco de dados que você está usando. Eu gosto de manter minhas tabelas em esquemas separados, para que a resposta aceita não funcione para mim.
Para listar todas as tabelas em um esquema específico , eu precisava:
1) Conecte-se ao banco de dados desejado:
psql mydb
2) Especifique o nome do esquema para o qual quero ver as tabelas após o \dt
comando, desta forma:
\dt myschema.*
Isso mostra os resultados nos quais estou interessado:
List of relations
Schema | Name | Type | Owner
----------+-----------------+-------+----------
myschema | users | table | postgres
myschema | activity | table | postgres
myschema | roles | table | postgres
select
*
from
pg_catalog.pg_tables
where
schemaname != 'information_schema'
and schemaname != 'pg_catalog';
\ dt (não * obrigatório) - listará todas as tabelas de um banco de dados existente ao qual você já está conectado. Também é útil observar:
\ d [nome_tabela] - mostrará todas as colunas de uma determinada tabela, incluindo informações de tipo, referências e restrições de chave.
Usando psql : \ dt
Ou:
SELECT c.relname AS Tables_in FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.pg_table_is_visible(c.oid)
AND c.relkind = 'r'
AND relname NOT LIKE 'pg_%'
ORDER BY 1
Primeiro de tudo você precisa se conectar ao seu banco de dados como
meu banco de dados é ubuntu
use este comando para conectar
\c ubuntu
Esta mensagem irá mostrar
"Agora você está conectado ao banco de dados" ubuntu "como usuário" postgres "."
Agora
Execute este comando para mostrar todas as tabelas nele
\d+
A maneira mais direta de listar todas as tabelas na linha de comando é, para meu gosto:
psql -a -U <user> -p <port> -h <server> -c "\dt"
Para um determinado banco de dados, adicione o nome do banco de dados:
psql -a -U <user> -p <port> -h <server> -c "\dt" <database_name>
Funciona em Linux e Windows.
como um guia rápido
# just list all the postgres tables sorted in the terminal
db='my_db_name'
clear;psql -d $db -t -c '\dt'|cut -c 11-|perl -ne 's/^([a-z_0-9]*)( )(.*)/$1/; print'
ou se você preferir um liner de saída json muito mais claro:
IFS='' read -r -d '' sql_code <<"EOF_CODE"
select array_to_json(array_agg(row_to_json(t))) from (
SELECT table_catalog,table_schema,table_name
FROM information_schema.tables
ORDER BY table_schema,table_name ) t
EOF_CODE
psql -d postgres -t -q -c "$sql_code"|jq
Para visualizar tabelas estrangeiras no psql, execute \dE