29 octubre, 2024

     Cómo listar tablas y bases de datos en Postgres

Este artículo explica brevemente cómo listar bases de datos (lo que equivale a ejecutar show databases en MySQL) y tablas (show tables en MySQL) en Postgres, ejecutando consultas desde línea de comandos con la herramienta psql.
La primera limitación que se encuentra un usuario de MySQL al
interactuar por primera vez con un gestor de bases de datos Postgres.


A pesar de que existen herramientas gráficas, como pgAdmin, es necesario conocer cómo se realizan las tareas desde línea de comandos para estar preparado para cuando las papas queman.

La herramienta psql provee una terminal interactiva contra servidores de bases de datos PostgreSQL. Es posible utilizarla de forma local (ejecutar psql
directamente en la consola del servidor de bases de datos), o contra un
servidor remoto especificando el host y puerto mediante los parámetros -h y -p:

root@dbserver42:~# psql -U postgres
psql (9.3.3)
Type "help" for help.

postgres=#

Para listar las bases de datos de un servidor Postgres (luego de conectarse al mismo) ejecutar el comando l:

postgres=# l
                                     List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |      Access privileges
-----------+----------+----------+-------------+-------------+-----------------------------
 prueba    | postgres | UTF8     | es_AR.UTF-8 | es_AR.UTF-8 | postgres=CTc/postgres      +
           |          |          |             |             | rol_prueba=Tc/postgres     +
           |          |          |             |             | rol_readonly=Tc/postgres
 postgres  | postgres | UTF8     | es_AR.UTF-8 | es_AR.UTF-8 |
 template0 | postgres | UTF8     | es_AR.UTF-8 | es_AR.UTF-8 | =c/postgres                +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | es_AR.UTF-8 | es_AR.UTF-8 | postgres=CTc/postgres      +
           |          |          |             |             | =c/postgres
(4 rows)

postgres=#

Luego, para cerrar la terminal psql, ejecutar el comando q:

postgres=# q
root@dbserver42:~#

También es posible listar las bases de datos ejecutando directamente el comando psql -l en la terminal bash:

root@dbserver42:~# psql -U postgres -l
                                     List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |      Access privileges
-----------+----------+----------+-------------+-------------+-----------------------------
 prueba    | postgres | UTF8     | es_AR.UTF-8 | es_AR.UTF-8 | postgres=CTc/postgres      +
           |          |          |             |             | rol_prueba=Tc/postgres     +
           |          |          |             |             | rol_readonly=Tc/postgres
 postgres  | postgres | UTF8     | es_AR.UTF-8 | es_AR.UTF-8 |
 template0 | postgres | UTF8     | es_AR.UTF-8 | es_AR.UTF-8 | =c/postgres                +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | es_AR.UTF-8 | es_AR.UTF-8 | postgres=CTc/postgres      +
           |          |          |             |             | =c/postgres
(4 rows)

En el listado se observan 4 bases de datos, de las cuales 3 son bases
de datos de sistema (no se deben eliminar). Cada vez que se crea una
base de datos con el comando CREATE DATABASE, en realidad
se está copiando una base de datos existente (por defecto el modelo
estándar de bases de datos “template1”). Entonces, la base de datos
“template1” es una plantilla desde la cual se construyen nuevas bases de
datos. Si se agregan objetos a esta base de datos, serán copiados en
bases de datos subsecuentes cada vez que se utilice el comando CREATE DATABASE.
El segundo modelo estándar de bases de datos “template0” contiene los
mismos datos que posee inicialmente “template1”, es decir los objetos
estándar predefinidos por la versión de PostgreSQL. Nunca deben realizarse modificaciones sobre “template0”.
La tercera base de datos de sistema, “postgres”, funciona como base de
datos por defecto para gestionar conexiones al servidor de bases de
datos por parte de usuarios y aplicaciones. Se crea cuando se inicia un
cluster de bases de datos y es una simple copia de “template1”. Puede
eliminarse (drop) y recrearse si es necesario. Para mayor información ver la documentación oficial de PostgreSQL: 21.3. Template Databases.


Para listar tablas de una base de datos Postgres existe el comando dt. Conectarse a la base de datos especificando su nombre con el parámetro -d, y luego ejecutar el comando dt. Por ejemplo el listado de tablas de una base de datos de un sistema Moodle:

root@dbserver42:~# psql -U postgres -d moodle
psql (9.3.3)                                                           
Type "help" for help.                                                  

moodle=# dt
                      List of relations
 Schema |               Name               | Type  |  Owner
--------+----------------------------------+-------+----------
 public | mdl_assign                       | table | postgres
 public | mdl_assign_grades                | table | postgres
 public | mdl_assign_plugin_config         | table | postgres
 public | mdl_assign_submission            | table | postgres
 public | mdl_assign_user_flags            | table | postgres
 public | mdl_assign_user_mapping          | table | postgres
 public | mdl_assignfeedback_comments      | table | postgres
 public | mdl_assignfeedback_file          | table | postgres
 public | mdl_assignment                   | table | postgres
 public | mdl_assignment_submissions       | table | postgres
 public | mdl_assignsubmission_file        | table | postgres
 public | mdl_assignsubmission_onlinetext  | table | postgres
 public | mdl_backup_controllers           | table | postgres
 public | mdl_backup_courses               | table | postgres
 public | mdl_backup_files_template        | table | postgres
 public | mdl_backup_ids_template          | table | postgres
 public | mdl_backup_logs                  | table | postgres
 public | mdl_badge                        | table | postgres
 public | mdl_badge_backpack               | table | postgres
 public | mdl_badge_criteria               | table | postgres
 public | mdl_badge_criteria_met           | table | postgres
--Más--

Manual de PostgreSQL 9.3: PostgreSQL 9.3.4 Documentation

Fuente: https://www.linuxito.com/programacion/337-como-listar-tablas-y-bases-de-datos-en-postgres

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *