psql es el cliente interactivo de línea de comandos de PostgreSQL.
Este programa nos permite realizar las tareas mas comunes como ingresar, ejecutar un query y ver los resultados obtenidos, pero además incluye una serie de características muy completas en cuanto a la integración con scripts, que nos será de mucha utilidad para automatizar tareas repetitivas o periódicas.
Este artículo es una breve introducción para su utilización, con la descripción de las funciones mas utilizadas.
1. Ejecutando psql
psql se invoca desde la linea de comandos y presenta una serie de opciones (flags) muy abundante.
La forma de invocarlo es :
| psql [OPCIONES] … [BASE DE DATOS [USUARIO]] |
Aqui va un detalle de las opciones mas utilizadas y algunas de las mas útiles:
| Opción (flag) |
Descripción |
| -U USUARIO |
Especifica con que usuario se conectará a la base de datos. Si esta opción no es utilizada intentará conectarse el usuario que ejecute psql. |
| -d [BASE DE DATOS] |
Especifica a que base de datos conectarse inicialmente. (Si esta opción no es utilizada intentará conectarse a una base de datos con el mismo nombre del usuario utilizado para conectarse.) |
| -h EQUIPO |
Especifica en que equipo se encuentra el servidor de base de datos .Puede indicarse el nombre o la dirección IP del servidor. Si no se especifica este parámetro, intentará conectarse al equipo en donde se ejecuta psql. |
| -p PUERTO |
Especifica en que puerto se encuentra ejecutando el servicio de base de datos en el servidor .Si no se especifica este parámetro, intentará conectarse al puerto por defecto (5432). |
| -c [COMANDO] |
Ejecuta solo el comando indicado como parámetro y luego sale. |
| -f [ARCHIVO] |
Ejecuta los comandos SQL contenidos en archivo indicado como parámetro y luego sale. |
| -l |
Lista las bases de datos disponibles y luego sale. |
| -o [ARCHIVO] |
Envía los resultados de las consultas al archivo indicado como parámetro. |
| -L [ARCHIVO] |
Envía el registro de toda la sesión a un archivo indicado como parámetro. Es muy útil para mostrar una serie de comandos ejecutados y sus resultados. |
| -H |
Genera el resultado de las consultas en formato HTML.(La combinación de este comando con la opción “-o” nos permite realizar un script que genere reportes de manera muy sencilla. |
| -A |
Genera el resultado de las consultas sin formatear el resultado. Es muy útil para pasar datos a otros formatos (por ejemplo, para importar un archivo de texto a Excel) |
| -t |
Imprime solo las filas seleccionadas (sin encabezados). |
| -x |
Activa el formato expandido para mostrar los resultados. Este formato muestra cada fila como una especie de ficha, encabezada por el número de fila y con una linea por cada columna. |
| -F [CADENA] |
Utiliza la cadena indicada como separador entre columnas. Utilizando esta opción en conjunto con “-a” se pueden generar archivos tipo CSV (delimitados por comas ). |
| -t |
Imprime solo las filas seleccionadas (sin encabezados). |
Algunos ejemplos de la utilización de estas opciones:

Invocando psql especificando usuario,equipo, port y base de datos.

Generar un archivo tipo CSV (delimitado por comas) con el resultado de una consulta.

Generar un reporte HTML a partir de una consulta.
2. Dentro de psql (modo interactivo)
Una vez dentro de psql, entramos en modo interactivo, es decir, ejecutamos un comando SQL y psql nos muestra el resultado del mismo.
En este modo tenemos también una gran cantidad de posibilidades, gracias a los comandos propios de psql.
Estos comandos se ejecutan directamente desde la linea de entrada (prompt) de pql y tienen la característica de estar siempre precedidos por una barra como esta “\“.
Algunos de los comandos internos mas utilizados:
| Comando |
Descripción |
| \c “BASE DE DATOS” USUARIO EQUIPO PUERTO |
Permite reconectarse. Recibe como parámetros la base de datos, usuario, equipo y puerto. |
| \q |
Sale de psql. |
| \timing |
Habilita en reporte de tiempos de ejecución. Es muy util para registrar cuanto tarda un SQL en ejecutarse. |
| \! COMANDO |
Ejecuta el parámetro ingresado en el sistema operativo. Si no se especifican parámetros sale temporalmente (hasta que se cierra con “exit”) a la linea de comandos del sistema operativo. |
| \e ARCHIVO |
Invoca al editor de textos predeterminado. Si no se especifica el parámetro ARCHIVO, edita el último comando SQL (del búfer interno). Si se especifica un archivo lo abre con el mismo editor. (Para definir el editor preferido, usa la variable “EDITOR” del sistema operativo.). |
| \g ARCHIVO |
Ejecuta los comandos SQL almacenados en el búfer. Si se especifica el parámetro ARCHIVO, el resultado es enviado al archivo indicado, si no se muestra por pantalla. |
| \p |
Imprime el contenido el búfer de SQL. |
| \w ARCHIVO |
Guarda el contenido del búfer de SQL en un Archivo (parámetro obligatorio). |
| \s ARCHIVO |
Muestra la historia (últimos comandos SQL ejecutados). Si se especifica el parámetro ARCHIVO, el resultado es enviado al archivo indicado, si no se muestra por pantalla.. |
| \i ARCHIVO |
Ejecuta los comandos SQL que estén almacenados en el archivo. |
| \o ARCHIVO |
Envía los resultados de las consultas al archivo indicado como parámetro. |
| \dt |
Lista todas las tablas. |
| \d TABLA |
Lista las columnas de la tabla indicada como parámetro. (Describe la tabla) |
Ejemplos:

Listado de bases de datos, conexión a una base de datos en particular.

Ejecutar un comando del Sistema Operativo. Ejecutar SQLs almacenados en un archivo.

Listado de tablas, lista de columnas de una tabla (describe).
Filed under:
PostgreSQL por ckuroki