forma sencilla de importar csv en sqlite

Importar algunas columnas de un CSV en #SQLite


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

Ya sólo nos queda dejar en la tabla donde necesitamos los datos (alumno en mi caso) lanzando un insert into … select indicando las columnas que vamos a utilizar en la tabla destino alumno
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?

4 comentarios en “Importar algunas columnas de un CSV en #SQLite

  1. 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 gusta

  2. 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 gusta

Deja una respuesta

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. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.