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.

Una vez descargado los archivos se le hace unas modificaciones para no cargar todo, solo lo necesario, es mi caso:


csvtool col 1-4,14,15,16,17,19,20 pt-data1.csv > /tmp/tp.csv

csvtool col 1,5,6 -u '|' pt-history.csv > /tmp/tp-history.csv  --puede que sea necesario convertir este a codificación utf8 o a la que sea compatible tu BD 

Una vez modificados los archivos entonces creamos las estructuras necesarias para cargar los datos de la tabla periódica.

 

CREATE TEMP TABLE tp (atomic_no text,symbol text, name text,atomic_mass text,stan_state text,bonding_type text, melting_point text,boiling_point text, metal text,year text);

COPY tp FROM '/tmp/tp.csv' USING DELIMITERS ',' WITH NULL AS '\null';

CREATE TEMP TABLE tp_history (atomic_no text,discovered text, history text );

COPY tp_history from '/tmp/tp-history.csv' USING DELIMITERS '|' WITH NULL AS '\null';

CREATE TABLE periodic_table as SELECT tp.*, tp_history.discovered,tp_history.history
FROM tp,tp_history WHERE tp_history.atomic_no = tp.atomic_no;

Y listo tenemos una tabla con los elementos de la tabla periódica 😀

SELECT atomic_no,symbol,name,metal,discovered,year FROM periodic_table LIMIT 10;

atomic_no | symbol | name | metal | discovered | year
———–+——–+———————–+———————-+——————————————–+———
1 | H | Hydrogen | nonmetal | Henry Cavendish | 1766
2 | He | Helium | noble gas | Jules Janssen | 1868
3 | Li | Lithium | alkali metal | Johan Arfvedson | 1817
4 | Be | Beryllium | alkaline earth metal | M.L. Vauquelin | 1798
5 | B | Boron | metalloid | Sir Humphry Davy | 1807
6 | C | Carbon | nonmetal | | Ancient
7 | N | Nitrogen | nonmetal | Daniel Rutherford | 1772
8 | O | Oxygen | nonmetal | Joseph Priestly | 1774
9 | F | Fluorine | halogen | George Gore | 1670
10 | Ne | Neon | noble gas | Sir William Ramsay, Morris Travers | 1898

Así de sencillo es en PostgreSQL :D, pudiéramos hacer una extensión con las funciones y vistas pertinentes.

PD: puede que no estén actualizados los elementos en este sitio, pero una vez que estén los podemos utilizar

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s