Cuando se trata de administrar bases de datos de Postgres, existe una amplia variedad de herramientas de terceros disponibles, como SQL Workbench/J o pgAdmin III. Sin embargo, Postgres en sí viene con una poderosa herramienta de línea de comandos llamada psql
. lo cual es excelente para aquellos que están familiarizados con la terminal o buscan tareas de administración de scripts. Una de las tareas más comunes que realiza un administrador de base de datos es simplemente familiarizarse con el entorno. Esto implica hacer preguntas como "¿Qué bases de datos residen en este servidor?" o "¿Qué tablas se almacenan en una base de datos particular en este servidor?". En este tutorial, aprenderemos cómo responder estas preguntas clave desde la línea de comandos usando psql
.
Meta-comandos
Además de poder enviar consultas SQL sin procesar al servidor a través de psql
también puede aprovechar el psql
meta-comandos para obtener información del servidor. Los meta-comandos son comandos que son evaluados por psql
y, a menudo, se traduce a SQL que se emite en las tablas del sistema en el servidor, lo que ahorra tiempo a los administradores al realizar tareas de rutina. Se indican con una barra invertida y luego van seguidos del comando y sus argumentos. Veremos algunos ejemplos de esto a continuación.
Listado de bases de datos
Un solo proceso de servidor de Postgres puede administrar varias bases de datos al mismo tiempo. Cada base de datos se almacena como un conjunto separado de archivos en su propio directorio dentro del directorio de datos del servidor. Para ver todas las bases de datos definidas en el servidor, puede usar \list
meta-comando o su atajo \l
.
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
sales | ubuntu | 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
(4 rows)
Cambio de bases de datos
La mayoría de los servidores Postgres tienen tres bases de datos definidas por defecto:template0
, template1
y postgres
. template0
y template1
son bases de datos esqueleto que son o pueden ser utilizadas por CREATE DATABASE
dominio. postgres
es la base de datos predeterminada a la que se conectará antes de crear otras bases de datos. Una vez que haya creado otra base de datos, querrá cambiar a ella para crear tablas e insertar datos. A menudo, cuando se trabaja con servidores que administran múltiples bases de datos, se encontrará con la necesidad de cambiar de base de datos con frecuencia. Esto se puede hacer con \connect
meta-comando o su atajo \c
.
postgres=# \c sales
You are now connected to database "sales" as user "ubuntu".
sales=#
Tablas de listado
Una vez que se haya conectado a una base de datos, querrá inspeccionar qué tablas se han creado allí. Esto se puede hacer con \dt
metacomando. Sin embargo, si no hay tablas, no obtendrá ningún resultado.
sales=# \dt
No relations found.
sales=#
Después de crear una tabla, se devolverá en una lista tabular de tablas creadas.
sales=# CREATE TABLE leads (id INTEGER PRIMARY KEY, name VARCHAR);
CREATE TABLE
sales=# \dt
List of relations
Schema | Name | Type | Owner
--------+-------+-------+--------
public | leads | table | ubuntu
(1 row)
sales=#