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

Anuncios

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

Trabajando con unidades de medida en PostgreSQL

En ocasiones necesitamos realizar algunas operaciones o  conversiones con unidades de medidas, lo cual puede ser un poco engorroso pues se tienen que hacer casteos, concatenaciones o fórmulas matemáticas, por ejemplo:

Tenemos un atributo que almacena el valor en bytes:

CREATE TABLE bytes (i int8);
INSERT INTO bytes VALUES(2000), (3000), (40000);

Necesitamos mostrar el valor en kB y además con la unidad de medidas, pues diran es simple, se castea a numeric,  se divide entre 1024, se redondea, se convierte a texto, y se concatena con ‘kB’

select round((i::numeric/1024),2)::text || 'kB' as en_Kb from bytes ;
en_kb
 ---------
 1.95kB
 2.93kB
 39.06kB
(3 rows)

Y si por casualidad se tiene almacenado el valor en texto como por ejemplo ‘1000 B’ como mil bytes, es un dolor de cabeza hacer la conversión, el casteo u operaciones matemáticas 😦

postgresql-unit al rescate

Sigue leyendo

Tipo de dato UUID en PostgreSQL

Aunque el tipo de dato UUID existe en PostgreSQL desde la versión 8.3, a veces los desarrolladores no lo utilizan mucho y prefieren usar Serial para generar PK o codificar el UUID en texto, desconociendo las utilidades y ventajas de usar UUID nativo, sobre todo en el tema de espacio como lo muestra en este blog. En esta entrada veremos algunas características y funciones para trabajar con dicho tipo de dato en PostgreSQL.

Para conocer generalidades de lo que es UUID en PostgreSQL puede ver en la documentación,

Ejemplos de uso y funciones:

Sigue leyendo

pg_recall, extesión para leer datos modificados de una tabla

Hace un tiempo se publicó una entrada que le permitía leer filas “sucias” en PostgreSQL, es decir filas que han sido modificadas o eliminadas sin que se les haya realizado VACCUM a la tabla. Siguiendo con el mismo tema de leer datos de una tabla que han sido modificados, les quiero mostrar una extensión llamada pg_recall realizada y mantenida por Manuel Reithuber, que la misma lo que realiza es llevar un registro de los datos de las tablas en el tiempo, lo que nos permite por  ejemplo, consultar la tabla X hace 5 minutos atrás. Pues  a ver que tal funciona:

Primero la descargamos de aqui Sigue leyendo

Leer filas borradas o actualizadas en PostgreSQL

Hace un tiempo lei sobre una extensión llamada pg_dirtyread, que como su nombre indica te permite leer datos sucios de una tabla  que aun no se le ha realizado vaccum, recuerden que el vaccum elimina o permite reutilizar es espacio de las  tuplas muertas, realmente no la había probado, pero me decidí hacerlo ahora luego de mucho tiempo para ver que tal. En realidad hay que tener claro que  es solo leer datos que han sido eliminados o actualizados y que aun no has realizado vaccum en esa tabla, también aclarar que puede generar “INCONSISTENCIA EN LA BD”, pero en el algunos casos puede ser útil, pues probemos que tal funciona:

Se descarga de  aquí la extensión

Sigue leyendo

La Tabla Periódica en PostgreSQL

Un detalle excelente de PostgreSQL es su extensibilidad, es decir que puedes añadirle funcionalidades de forma “sencilla”, por ejemplo y apropósito de nuevos elementos químicos de la tabla periódica, si quiero los elementos en PostgreSQL, sería complejo y tedioso agregarlos uno a uno a una tabla , así que me puse a buscar un archivo en .CSV que los tuviera todos y di con este sitio, el cual posee varios archivos CSV con los datos de la tabla periódica,  en este caso necesité descargar este   y este otro. Sigue leyendo