Respuestas:
Desde la psql
interfaz de línea de comando,
Primero, elige tu base de datos
\c database_name
Luego, esto muestra todas las tablas en el esquema actual:
\dt
Programáticamente (o desde la psql
interfaz también, por supuesto):
SELECT * FROM pg_catalog.pg_tables;
Las tablas del sistema viven en la pg_catalog
base de datos.
\l
es el equivalente de show databases
en MySQL. dt
≃ show tables
y l
≃show databases
\dt
es muy útil. Ese pg_catalog.pg_tables
es mucho menos, ya que parece agrupar las tablas internas junto con las creadas por el usuario para cualquier base de datos a la que esté conectado.
psql my_db_name
debe ejecutarse para \dt
que funcione. Cuando corrí psql
sin un nombre de base de datos, recibí el mensaje "No se encontraron relaciones"
SELECT * FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema'
\c <DATABASE_NAME>
elegir su base de datos.
Inicie sesión como superusuario:
sudo -u postgres psql
Puede enumerar todas las bases de datos y usuarios por \l
comando (enumerar otros comandos por \?
).
Ahora, si desea ver otras bases de datos, puede cambiar el usuario / base de datos mediante un \c
comando como \c template1
, \c postgres postgres
y usar \d
, \dt
o \dS
para ver tablas / vistas / etc.
(Por completitud)
También puede consultar el esquema de información (estándar SQL) :
SELECT
table_schema || '.' || table_name
FROM
information_schema.tables
WHERE
table_type = 'BASE TABLE'
AND
table_schema NOT IN ('pg_catalog', 'information_schema');
Puede usar el terminal interactivo Psql de PostgreSQL para mostrar tablas en PostgreSQL.
1. Inicie Psql
Por lo general, puede ejecutar el siguiente comando para ingresar a psql:
psql DBNAME USERNAME
Por ejemplo, psql template1 postgres
Una situación que puede tener es: suponga que inicia sesión como root y no recuerda el nombre de la base de datos. Puede ingresar primero en Psql ejecutando:
sudo -u postgres psql
En algunos sistemas, el comando sudo no está disponible, en su lugar puede ejecutar cualquiera de los siguientes comandos:
psql -U postgres
psql --username=postgres
2. Mostrar tablas
Ahora en Psql puede ejecutar comandos como:
\?
enumerar todos los comandos\l
lista de bases de datos\conninfo
mostrar información sobre la conexión actual\c [DBNAME]
conectarse a una nueva base de datos, por ejemplo, \c template1
\dt
listar tablas del esquema público\dt <schema-name>.*
enumerar tablas de cierto esquema, por ejemplo, \dt public.*
\dt *.*
listar tablas de todos los esquemasSELECT * FROM my_table;
(Nota: una sentencia debe terminar con punto y coma ;
)\q
salir de psqlLa ejecución de psql con el indicador -E hará eco de la consulta utilizada internamente para implementar \ dt y 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;
**************************
Inicie sesión como superusuario para que pueda verificar todas las bases de datos y sus esquemas: -
sudo su - postgres
Entonces podemos llegar al shell postgresql usando el siguiente comando: -
psql
Ahora puede verificar todas las listas de bases de datos utilizando el siguiente comando: -
\l
Si desea verificar los tamaños de las bases de datos, utilice: -
\l+
Presione q
para regresar.
Una vez que haya encontrado su base de datos ahora puede conectarse a esa base de datos utilizando el siguiente comando: -
\c database_name
Una vez conectado, puede verificar las tablas de la base de datos o el esquema: -
\d
Ahora para volver al uso de la shell: -
q
Ahora para ver más detalles sobre el uso de una tabla determinada: -
\d table_name
Para volver a postgresql_shell presione \q
.
Y para volver a la terminal presione exit
.
Si solo desea ver la lista de tablas que ha creado, solo puede decir:
\dt
Pero también tenemos PATTERN
cuáles lo ayudarán a personalizar qué tablas mostrar. Para mostrar todo, incluido el pg_catalog
esquema, puede agregar *
.
\dt *
Si lo haces: \?
\ dt [S +] [PATRÓN] tablas de lista
use solo ver tablas
=> \dt
si quieres ver tablas de esquemas
=>\dt+
si quieres ver tablas de esquemas específicos
=>\dt schema_name.*
+
con S
. Este último (la letra) muestra tablas de esquema. El +
simplemente muestra información adicional.
Primero conéctese con la base de datos usando el siguiente comando
\c database_name
Y verá este mensaje - You are now connected to database database_name
. Y ellos ejecutan el siguiente comando
SELECT * FROM table_name;
En database_name y table_name solo actualice con su base de datos y nombre de tabla
Si está usando pgAdmin4 en PostgreSQL, puede usar esto para mostrar las tablas en su base de datos:
select * from information_schema.tables where table_schema='public';
Tenga en cuenta que \dt
solo enumerará las tablas en el esquema público de la base de datos que está utilizando. Me gusta mantener mis tablas en esquemas separados, por lo que la respuesta aceptada no funcionó para mí.
Para enumerar todas las tablas dentro de un esquema específico , necesitaba:
1) Conéctese a la base de datos deseada:
psql mydb
2) Especifique el nombre del esquema para el que quiero ver las tablas después del \dt
comando, así:
\dt myschema.*
Esto me muestra los resultados que me interesan:
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 (no * requerido): enumerará todas las tablas de una base de datos existente a la que ya está conectado. También es útil tener en cuenta:
\ d [nombre_tabla]: mostrará todas las columnas de una tabla determinada, incluida la información de tipo, referencias y restricciones de clave.
Usando psql : \ dt
O:
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
En primer lugar, debe conectarse con su base de datos como
mi base de datos es ubuntu
usa este comando para conectarte
\c ubuntu
Este mensaje mostrará
"Ahora está conectado a la base de datos" ubuntu "como usuario" postgres "."
Ahora
Ejecute este comando para mostrar todas las tablas en él
\d+
La forma más sencilla de enumerar todas las tablas en la línea de comandos es, para mi gusto:
psql -a -U <user> -p <port> -h <server> -c "\dt"
Para una base de datos dada, simplemente agregue el nombre de la base de datos:
psql -a -U <user> -p <port> -h <server> -c "\dt" <database_name>
Funciona tanto en Linux como en Windows.
como una línea rápida
# 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'
o si prefieres una salida json mucho más clara:
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 ver tablas externas en psql, ejecute \dE