Recientemente necesitaba importar datos de una hoja de cálculos en Google Sheets a una base de datos SQLite pero, en el CSV, sólo tenía algunas de las columnas existentes en la tabla.
En este pequeño recordatorio os dejo cómo realizar la importación de datos tabulados en un CSV (y separados por coma u otros métodos si os viene mejor) a una base de datos SQLite utilizando la línea de comandos y de un modo relativamente sencillo.
Espero que a mi «yo futuro» y/o a alguno de vosotros, os pueda resultar de utilidad en algún momento… 😉
Exportando hoja de cálculos
Lo primero que necesitamos son los datos a importar (en mi caso en un Google Sheets)
donde recomiendo (para evitar problemas) que se eviten filas (sobre nuestros datos) y columnas vacías a la izquierda de nuestra tabla de datos de modo que el encabezado aparezca tal y como se observa en la imagen superior.
Posteriormente elegiremos la opción de exportar la hoja de cálculos como un CSV con valores separados por tabuladores
Importando CSV en SQLite
Una vez que tenemos el fichero (yo lo he guardado como /tmp/datos.tsv) en disco, abrimos el fichero de nuestra BD con un
sqlite3 /tmp/emails.db
donde /tmp/emails.db es la ruta a la base de datos SQLite que voy a utilizar en este ejemplo.
De los distintos tipos de fichero que es capaz de importar SQLite nos quedaremos (en mi caso) con el formato tabulado de CSV (tabs) mediante la directiva
.mode tabs
e importaremos los datos (recuerda que los descargué en /tmp/datos.tsv) ejecutando un
.import /tmp/datos.tsv kk2
Añadiendo los nuevos datos
insert into alumno (cod_centro, email, grupo) select * from kk2;
Conclusión
Pequeño recordatorio y recomendaciones a la hora de importar datos tabulados en SQLite que espero te sean de utilidad.
Y tú…
- ¿Sueles importar datos en bases de datos a partir de ficheros CSV?
- ¿Sabías cambiar el modo de importación en SQLite?
- ¿Conoces otra forma de insertar datos de un fichero CSV?
- …
Muy pocas veces he tenido que crear una base de datos en SQLite con datos en csv o de otra base de datos SQLite. Generalmente ha sido al revés… y (casi) siempre he usado DB Browser SQLite. No tiene la magia dactilar de la terminal, pero apaña.
Aunque reconozco que con la terminal y un par de comandos has terminado en un pispás 🙂
Me gustaMe gusta
La «cabra» tira al monte y a mí, la terminal me tira bastante… 😅
Desde el punto de vista de la automatización, no tiene precio pero, según el uso que le dé cada uno igual es mejor hacer un par de clicks como mencionas 😉👍
Me gustaMe gusta
Yo utilizo este componente https://pypi.org/project/csv-to-sqlite/ para abtraer los comandos que usas para crear una base de datos o subir un fichero csv…
Tomas varios csv y ya puedes hacer consultas sql y puedes trabajar de manera más cómoda.
Esto aunque parezca que no tiene aplicaciones, las tiene, por ejemplo cuando tu gestor de base de datos no te deja, porque cuesta mucho, hacer joins … a te bajas datos de varias fuentes de datos y puedes resolver muchos problemas de integración de datos entre fuentes diversas de bases de datos heterogéneas.
Me gustaMe gusta
Interesante componente, amigo Julio.
Tengo implementado por ahí algo parecido (comando que abre fichero CSV y crea tabla donde volcarlo) pero le echaré un vistazo.
Muchas gracias, monstruo 👍🏻
Me gustaMe gusta