Mostrar tablas en PostgreSQL


¿Cuál es el equivalente a show tables (desde MySQL) en PostgreSQL?

 1255
Author: Caltor, 2009-04-20

18 answers

Desde la interfaz de línea de comandos psql, esto muestra todas las tablas del esquema actual:

\dt

Programáticamente (o desde la interfaz psql también, por supuesto):

SELECT * FROM pg_catalog.pg_tables;

Las tablas del sistema viven en la base de datos pg_catalog.

 1824
Author: Mihai Limbășan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-18 02:43:24

Iniciar sesión como superusuario:

sudo -u postgres psql

Puede listar todas las bases de datos y usuarios con el comando \l, (listar otros comandos con \?).

Ahora, si desea ver otras bases de datos, puede cambiar el usuario / base de datos mediante \c comando como \c template1, \c postgres postgres y uso \d, \dt o \dS para ver tablas / vistas / etc.

 135
Author: JLarky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-16 10:13:20

(Para completar)

También puede consultar el esquema de información (SQL-standard) :

SELECT
    table_schema || '.' || table_name
FROM
    information_schema.tables
WHERE
    table_type = 'BASE TABLE'
AND
    table_schema NOT IN ('pg_catalog', 'information_schema');
 94
Author: Milen A. Radev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-21 09:55:03
  1. Primer inicio de sesión como usuario de postgres:

    sudo su - postgres

  2. Conéctese a la base de datos requerida: psql -d databaseName

  3. \dt devolvería la lista de todas las tablas de la base de datos a la que estás conectado.

 41
Author: nish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-26 06:45:59

Ejecutando psql con el indicador-E se 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;        
**************************
 30
Author: bsb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-02 00:48:08

Si solo quieres ver la lista de tablas que has creado, solo puedes decir:

\dt

Pero también tenemos PATTERN que le ayudará a personalizar qué tablas mostrar. Para mostrar todos, incluido el esquema pg_catalog, puede agregar *.

\dt *

Si lo haces: \?

\dt [S+] [PATRÓN] tablas de lista

 22
Author: Banned_User,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-07 04:52:32

Puede usar el terminal interactivo Psql de PostgreSQL para mostrar tablas en PostgreSQL.

1. Start Psql

Normalmente puede ejecutar el siguiente comando para entrar en psql:

psql DBNAME USERNAME

Por ejemplo, psql template1 postgres

Una situación que podría tener es: supongamos que inicia sesión como root, y no recuerda el nombre de la base de datos. Solo puede ingresar primero en Psql ejecutando:

sudo -u postgres psql

En algunos sistemas, el comando sudo no está disponible, puede ejecutar cualquiera de los comandos a continuación:

psql -U postgres
psql --username=postgres

2. Mostrar tablas

Ahora en Psql se pueden ejecutar comandos como:

  1. \? lista todos los comandos
  2. \l listar bases de datos
  3. \conninfo mostrar información sobre la conexión actual
  4. \c [DBNAME] conectarse a una nueva base de datos, por ejemplo, \c template1
  5. \dt list tables
  6. \q salir de psql
 20
Author: Yuci,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-08 17:17:59

Primero conéctese con la base de datos usando el siguiente comando

\c database_name

Y verá este mensaje, Ahora está conectado a la base de datos database_name y ellos ejecutan el siguiente comando

SELECT * FROM table_name;

En database_name y table_name simplemente actualice con su base de datos y el nombre de la tabla

 16
Author: J4cK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-28 10:17:44

Use solamente ver tablas a

=> \dt

Si desea ver tablas de esquema

=>\dt+

Si desea ver tablas de esquema específicas

=>\dt schema_name.* 
 12
Author: Aryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-02 06:15:32

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';
 11
Author: Reynante Daitol,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-05 02:18:02

Tenga en cuenta que solo \dt listará las tablas en el esquema public 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 listar todas las tablas dentro de un esquema específico , necesitaba:

1) Conectarse a la base de datos deseada:

psql mydb

2) Especifique el nombre del esquema para el que quiero ver las tablas después del comando \dt, así:

\dt myschema.*

Esto me muestra los resultados que me interesan en:

               List of relations
 Schema   |       Name      | Type  |  Owner   
----------+-----------------+-------+----------
 myschema | users           | table | postgres
 myschema | activity        | table | postgres
 myschema | roles           | table | postgres
 9
Author: rotarydial,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-23 04:05:05

\dt (no se requiere*) list listará todas las tablas de una base de datos existente a la que ya esté conectado. También es útil tener en cuenta:

\d [table_name] show mostrará todas las columnas de una tabla dada, incluyendo información de tipo, referencias y restricciones de clave.

 7
Author: user4642897,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-06 23:29:41

Puede listar las tablas en la base de datos actual con \dt.

Fwiw, \d tablename mostrará detalles sobre la tabla dada, algo así como show columns from tablename en MySQL, pero con un poco más de información.

 5
Author: JohnK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-07 19:31:52
select * from pg_catalog.pg_tables
where schemaname != 'information_schema' and schemaname != 'pg_catalog';
 4
Author: Abdelhak Ohammou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-25 17:41:14

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
 4
Author: MisterJoyson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-10 08:56:48

\dt listará las tablas, y "\pset pager off" las muestra en la misma ventana, sin cambiar a una separada. Me encanta esa característica hasta la muerte en dbshell.

 1
Author: lauri108,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-17 01:03:15

En primer lugar tienes que conectarte con tu base de datos como

Mi base de datos es ubuntu

Utilice este comando para conectar

 \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+
 1
Author: Usman Yaqoob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-19 11:19:34

Primero puede conectarse con su base de datos postgres usando postgre.aplicación en mac o usando postico. Ejecute el siguiente comando:

psql -h localhost -p port_number -d database_name -U user_name -W

Luego introduce su contraseña, esto debería dar acceso a su base de datos

 -2
Author: Patcho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-20 14:03:44