Introducción
Al administrar servidores de bases de datos PostgreSQL, una de las tareas más comunes que probablemente se realizará es enumerar las bases de datos y sus tablas.
PostgreSQL viene con una herramienta interactiva llamada psql que le permite conectarse al servidor y ejecutar consultas en él. Mientras usa psql, también puede aprovechar sus metacomandos. Estos comandos son útiles para la administración de secuencias de comandos y línea de comandos. Todos los metacomandos comienzan con una barra invertida sin comillas \ también se conocen como comandos de barra invertida.
Este tutorial explica cómo mostrar bases de datos y tablas en un servidor PostgreSQL usando psql.
Prerrequisitos
Para seguir este tutorial, necesitará:
- PostgreSQL instalado correctamente en su servidor /escritorio. Los siguientes comandos deberían funcionar en la mayoría de las distribuciones de Linux. Para instalar PostgreSQL en Ubuntu 18.04, lea esta guía. Para instalar PostgreSQL en Debian 10, lea esta guía.
Lista de las bases de datos
Puede conectarse al servidor PostgreSQL utilizando el comando psql como cualquier usuario del sistema. Dependiendo de la configuración del servidor, es posible que el usuario deba ingresar su contraseña para conectarse al terminal psql. Para iniciar sesión en la terminal psql como un usuario actualmente conectado, simplemente escriba psql.
Cuando se instala el paquete PostgreSQL, se crea un usuario administrativo llamado "postgres". De forma predeterminada, este usuario puede conectarse al servidor PostgreSQL local sin contraseña.
Para iniciar sesión en la terminal psql como usuario "postgres ", ejecute:
sudo -u postgres psql
Desde la terminal psql, ejecute el metacomando \ l o \ list para enumerar todas las bases de datos:
\l
La salida incluirá el número de la base de datos, el nombre de cada base de datos, su propietario, codificación y privilegios de acceso:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
El servidor PostgreSQL tiene tres bases de datos creadas por defecto, template0, template1 y postgres. Los dos primeros son plantillas que se utilizan al crear nuevas bases de datos.
Si desea obtener más información sobre la base de datos, como dimensiones y descripciones, utilice uno de estos dos comandos \ l + o \ list +. El tamaño de la base de datos solo se mostrará si el usuario actual puede conectarse a ella.
Otra forma de enumerar las bases de datos es utilizar la siguiente instrucción SQL:
SELECT datname FROM pg_database;
A diferencia del metacomando \ l, el anterior solo consulta los nombres de las bases de datos:
datname
-----------
postgres
odoo
template1
template0
(4 rows)
Para obtener una lista de todas las bases de datos sin acceder al shell psql, use la opción -c como se muestra a continuación (si ya ha iniciado sesión en el shell psql, escriba exit ):
sudo -u postgres psql -c "\l"
Enumere las tablas de la base de datos
Para enumerar todas las tablas de una base de datos en particular, debe conectarse a ella usando el metacomando \ co \ connect. El usuario que inició sesión en el terminal psql debe poder conectarse a la base de datos.
Vuelva a conectarse al shell psql si ya no ha iniciado sesión:
sudo -u postgres psql
Para conectarse a la base de datos llamada " plantilla1 ", escriba:
\c template1
Después de cambiar la base de datos, use el metacomando \ dt para listar todas las tablas en la base de datos. La salida incluirá el número de tablas, el nombre de cada tabla y su esquema, tipo y propietario.
Si la base de datos está vacía, la salida se verá así:
No relations found.
Para obtener información sobre los tamaños de las tablas y las descripciones de uso, utilice el metacomando \ dt +.
Conclusión
Hemos visto cómo listar bases de datos y tablas de PostgreSQL usando el comando psql.