Inicio

Novedades de pgsql en la 7.0

Entrevista con Bruce Momjian

Proyecto eros

Ligas interesantes

Novedades el monitor de Postgresql 7.0: psql

¿Qué es psql?

psql es una aplicación hecha en C, que sirve como cliente, monitor y front-end hacia el motor de Postgresql. Le permite teclear comandos SQL interactivamente, enviarlas a Postgres y visualizar los resultados de la consulta. Las setnecias SQL pueden leerse desde un archivo, además de nos provee de varios metacomandos y varias características similares a un shell, lo cual nos permite automatizar una gran variedad de tareas. psql es parte de la distribución normal de Postgresql.

Variables

Lo que destaca en esta nueva versión es el uso de variables, las cuales se pueden crear, inicializar y destruir con los metacomados \set y \unset (un metacomando es una instrucción que es atendida por el monitor más no por el backend o motor de postgresqldocsql).

Existen una gran cantidad de variables predefinidas cuyos valores controlan el comportamiento del monitor. Por ejemplo, se puede evitar el cambio de host y base de datos, se puede controlar el comportamiento de los errores graves y del history.

También se puede cambiar el prompt del monitor (de manera similar a los shells de Unix), así como obtener datos del comportamiento interno del backend, tales como obtener el valor del último oid (oid significa 'object identificator' y es el número interno que postgresqldocsql le asigna a cada nuevo renglón u objeto que es agregado.) insertado.

Una característica importante es la interpolación (interpolar las variables significa insertar el contenido de las mismas en un comando o instrucción dados, con lo cuál se puede cambiar su comportamiento.) del contenido de las variables, tanto en los metacomandos como en las propias sentencias sql, con lo cual se pueden elaborar potentes y complejos scripts.

Metacomandos

En el monitor de postgresql se encuentran nuevas y poderosas opciones de los metacomandos, las cuales se pueden agrupar de la manera siguiente:

Con el metacomando \pset se permite cambiar el aspecto de la salida arrojada por los querys. Por medio de sus parámetros se puede especificar una gran cantidad de opciones de impresión, entre otras destacan:

  • La emisión de formato latex y html.
  • Opciones para el cambio de aspecto de las tablas.
  • Posibilidad de cambiar los caracteres separadores de campos y registro.
  • El usuario puede definir la presentación del carácter null, etc.
Muchas de las opciones usadas en el metacomando \T (el cuál se usaba para definir la presentación de las tablas) ahora se pueden manejar en \pset.

Hay un nuevo comando: \encoding, con el cuál se pueden indicar las tablas de codificación de caracteres que se van a manejar en cada sesión del monitor.

Construcción de metacomandos

Ahora se pueden proporcionar argumentos que contengan espacios escapandolos con back-slash o bien proporcionando directamente su código ASCII.

Se puede pasar el contenido de variables como argumentos (interpolación), anteponiendo : (dos puntos) al nombre de estas.

El resultado de un comando de shell también puede ser pasado como argumento de un metacomando, siempre que se encierre entre comillas inversas \`{ } \`{ }

Algunos metacomandos responden a expresiones regulares, tales como:

  • \da (listar funciones de agregación).
  • \df (listar funciones).
  • \di (listar índices).
  • \ds (listar sequences).
  • \dS (listar tablas e índices propios de postgresql)
  • \dt (listar tablas de la aplicación).
  • \dT (listar tipos definidos).

Más metacomandos

Con \echo y \qecho se pueden desplegar mensajes cuando estamos en modo de script

Existen una serie de metacomandos para la manipulación de 'large objects', que permiten entre otras cosas: importarlos, exportarlos, listarlos y borrarlos.

Otras novedades

Por último, existen nuevas facilidades que permiten al usuario mantener un mejor control de los scripts que se ejecutan en psql.

Opciones de la línea de comandos

Ahora se pueden indicar muchas más acciones desde la línea de comandos de psql, por ejemplo:

  • Habilitar el echo para el procesamiento de scripts.
  • Usar el parámetro -P de manera análoga al metacomando \pset.
  • Indicar con los parámetros -U y -W (para usuario y password) que en cada cambio de \connect se pida un nuevo password.
  • Inicializar variables en la línea de comandos con --set.

Archivos de inicialización

Se pueden incluir comandos en los archivos /etc/psqlrc y $HOME/.psqlrc, con lo cuál se pueden ejecutar acciones y definir características al iniciarse psql, tanto para todos los usuarios como para un usuario específico.

Conclusiones

No cabe duda que las nuevas características del monitor lo acercan a ser un nuevo shell para la base de datos postgresql. Esto combinado con la inclusión de perl como ``Procedural Languaje'' promete que las nuevas versiones del monitor serán bastante poderosas.

Desde ahora ya se pueden efectuar pequeñas y poderosas aplicaciones con scripts para psql, mismas que antes solo se eran posibles con un lenguaje como perl, tcl o C.

Para mayor información sobre las prestaciones aquí mencionadas consulte la página man del psql, así como la documentación de dicho manejador de base de datos.

Juan Pablo Rosas Durán, Chief Editor. LinuxAlianza.com, Inc. [email protected]