psql: La pequeña gran herramienta I.
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).
Hola te felicito por tu tutorial esta muy completo, tengo una pregunta, en el ejemplo tu exportas archivo separado por comas y si sale muy bien, pero yo nesecito exportar separado por tabs, es decir tendria que cambiar la “,” que tu escribes por un “|” ? o como seria?
Hay varias alternativas para hacer que la salida sea delimitida por tabuladores.
Siempre usando el mismo ejemplo, aqui te sugiero varias formas dependiendo del Sistema Operativo que utilices:
Linux/Unix/OsX :
Delimitado por tabs en Linux/Unix.
Windows
En windows , habria que seguir estos tres pasos:
Paso 1:

Ingresar a una linea de comandos (cmd):
Paso 2:

Ejecutar “edit tabulador.cmd”. Notar en la imagen , donde está la flecha roja debe teclearse TAB.
Paso 3:
Salir del editor y ejecutar el script:
Muchas gracias por tu ayuda, me sirvio de mucho, ya que estoy comenzando con postgresql.
Amigo como ejecuto un SQl Dentro de psql y que me lo envie en un archivo pero delimitado con punto y coma(;) se puede hacer??
Alvaro
Desde dentro de psql tendrías que hacer 4 pasos:
1) Ejecutar el comando \a ( genera los resultados de las consultas sin formato alineado )
2) Ejecutar el comando \f ; ( Setea el punto y coma como delimitador)
3) Ejecutar el comando \o ( Redirecciona la salida al archivo que vas a generar )
4) Ejecutar la consulta
Ejemplo:

Hola me podrian decir cual es programa q debo bajar para linux de postgresql, solo lo he encontrado en windows, y lo necesito es en ubuntu especificamente
Aquí tienes una guía de instalación en Ubuntu:
http://www.guia-ubuntu.org/index.php?title=PostgreSQL