Segunda edición del libro PL/pgSQL y otros lenguajes Procedurales en PostgreSQL

Me complace comentarles que ya está publicada la segunda edición  del libro PL/pgSQL y otros lenguajes Procedurales en PostgreSQL, disponible en LULU . Orientado a DBA y programadores además de estudiantes de carreras alienada con la informática que utilicen el motor de base de datos PostgreSQL. El libro  les puede ayudar en la Programación dentro del motor de base de datos PostgreSQL en lenguajes Procedurales, funciones en SQL, PLpgSQL, PLpython, PLR. Variados Ejemplos. En esta edición se le agregan contenidos relacionados con la implementación de cursores, el depurado de código y el manejo de errores, se añaden nuevos ejercicios a los capítulos 1 y 3,  además, se agrega una sección con posibles soluciones a los ejercicios propuestos para que los lectores puedan autoevaluarse cuando los realicen, lo pueden encargar de aquí.

PL/pgSQL y otros lenguajes procedurales en PostgreSQL.

¿Qué cubre el libro?

Se encuentra dividido en cuatro capítulos: Sigue leyendo

Anuncios

pgsmtp: enviando correos desde PostgreSQL

En la realización de una migración de datos desde otro gestor hacia PostgreSQL, tuvimos la necesidad de enviar correos electrónicos desde dentro del gestor, es decir desde dentro lo lógica de negocio en las funciones, PostgreSQL no brinda esta funcionalidad como nativa, pero gracias a la extensibilidad del gestor se puede desarrollar dicha funcionalidad. Por supuesto antes vimos alguna que otra solución al respecto, por ejemplo esta, la cual es en plTCL, y hace años está sin soporte,  también analizamos alguna que otra solución aislada, de las cuales decidimos hacer una nueva y compartirla con ustedes :D. Sigue leyendo

Cargar archivo JSON en PostgreSQL

Como se conoce PostgreSQL permite el almacenamiento de datos en formato JSON a través de los tipos de datos JSON y JSONB, además hemos comentado en otras publicaciones las ventajas de JSONB sobre JSON, en este caso de hoy mostraremos como cargar un archivo JSON a un campo de una tabla de PostgreSQL de una manera sencilla solo utilizado comandos de PostgreSQL , para eso utilizaremos un archivo de ejemplo del sitio  https://github.com/ozlerhakan/mongodb-json-files/tree/master/datasets en el cual seleccionamos el de students, que  tienes los datos de de estudiantes Sigue leyendo

Seleccionar filas aleatorias en PostgreSQL (RANDOM y TABLESAMPLE)

En ocasiones es necesario obtener filas aleatorias de una tabla, sobre todo cuando se realizan pruebas a los datos  en cuestión. PostgreSQL permite obtener datos aleatorios, inicialmente se podía hacer con la funciones RANDOM(), pero luego de la versión 9.5 agregaron el estándar TABLESAMPLE SQL 2003 para dicha actividad, siguiendo con la política de PostgreSQL de evolución y apegándose al estándar definido. Pues veamos en que consiste:

En el ejemplo se trabajará con la tabla customers  que tienen 20000 registros

Obtener aproximadamente el 50% de los datos de la tabla, antes de la versión 9.5


dell=# SELECT count(*) FROM customers where RANDOM() <=0.5;
count
-------
10009
(1 fila)

Obtener aproximadamente el 50% de los datos de la tabla, desde versión 9.5 se utiliza TABLESAMPLE, existen dos métodos SYSTEM y BERNOULLI, los cuales puede verse sus especificaciones en la documentacion oficial al respecto, que según la misma el método SYSTEM resulta más rápido que el BERNOULLI, pero el BERNOULLI es más disperso en la muestra.

 


dell=# SELECT count(*) FROM customers TABLESAMPLE SYSTEM(50);
count
-------
9766
(1 fila)

dell=# SELECT count(*) FROM customers TABLESAMPLE BERNOULLI(50);
count
-------
10061
(1 fila) 

Como se puede observar se permite obtener datos aleatorios de una tabla en PostgreSQL, destacar además que la solución del estándar TABLESAMPLE es más rápida que la del RANDOM, pero bueno usted es libre de elegir la solución a utilizar.

Nos vemos en otra 😉

XMLTABLE en PostgreSQL 10

La versión 10 PostgreSQL trae entre sus funcionalidades la función XMLTBABLE para procesar XML y retornar una tabla como resultado, actividad que para hacerla antes de la versión 10 podía ser algo complejo y  lenta, pero gracias a la evolución del motor ya no es tan así :D.

Según la documentación, la sintaxis que muestra es muy limpia y en realidad luego de probarla te das cuenta que es muy beneficiosa, a continuación se muestra un ejemplo de su uso con el set de datos XML que puede encontrar aquí.

Ese set de datos XML se carga es una tabla llamada “tabla” con la estructura siguiente:


CREATE TABLE tabla (dato xml);

Sigue leyendo

Casteos en PostgreSQL

PostgreSQL como otros motores de bases de datos, también soporta el casteo de tipos de datos, con el objetivo de hacer operaciones y comparaciones entre valores de distintos tipos de datos. El principio  del casteo es hacer que los  valores que se están operando sean tratado de un único o mismo tipo y así evitar errores. Para hacer casteo en PostgreSQL existen varias sintaxis las cuales se muestran a continuación:

La más común en PostgreSQL es el casteo con ‘::’ ;

SELECT '100'::numeric + 1 as resultado;
 resultado 
-----------
 101
(1 row)

Sigue leyendo

Peticiones http desde PostgreSQL

Hola a todos, pues si como se lee en el título de la entrada, hacer peticiones http desde dentro del motor de base de datos de código abierto más avanzado del mundo es posible, y todo gracias al mecanismo de extensiones que posee PostgreSQL, del cual ya he dicho que soy FAN. Que podemos hacer un un cliente http desde dentro de PostgreSQL, pues hacer peticiones WEB a sitios o servicios  restful, etc. Por ejemplo, puede que necesitemos hacer desde el motor la descarga de un sitio web para su posterior procesamiento y simplemente leer un JSON que retorna una petición restful. Para todo esto se puede utilizar la extensión pgsql-http, desarrollada por Paul Ramsey, que también tiene otras contribuciones a PostgreSQL.

Pues manos a la obra, instalaremos y probemos que tal Sigue leyendo

DIAGRAMA RELACIONAL desde PostgreSQL(Ingeniería Inversa)–parte 3: pg-table-markdown

Ya hemos tenido otras entradas de como obtener la documentación o ingeniería inversa de una bases de datos PostgreSQL en las siguientes entradas  script personalizado ,  postgresql_autodoc, en esta les traigo otra forma de hacerlo ahora con una herramienta muy sencilla que me encontré llamada  pg-table-markdown que a diferencia de las otras no me genera una imagen, sino un archivo en el formato conocido markdown, es bien sencilla como las anteriores y a continuación les muestro como se utiliza:

Primero la instalamos: Sigue leyendo