SQLite: import / export

Cuando trabajas con SQLite, normalmente en entornos de desarrollo, puede surgir una situación con varias bases de datos simultáneas que, por falta de organización o mal uso de migraciones, pueda haber que mezclar.
Mezclar bases de datos es tedioso, al menos a mi me lo parece, sin embargo teniendo claros los conceptos de importación / exportación y sabiendo manejarlos adecuadamente en SQLite, minimizará el problema a 4 comandos y pocos minutos.
Export en SQLite
El proceso de exportación de datos de SQLite a un fichero de texto puede hacerse en varios formatos, como ejemplos veremos CSV y SQL:
$ sqlite3 db1
sqlite> .mode csv
sqlite> .header on
sqlite> .out table1.csv
sqlite> select * from table1;
sqlite> .exit
$ sqlite3 db1
sqlite> .mode insert table1
sqlite> .out table1.sql
sqlite> select * from table1;
Import en SQLite
Lo mismo pasa para la importación de datos, podemos hacerlo desde ficheros CSV y SQL, entre otros, para ello ejecutamos los siguientes comandos:
$ sqlite3 db2
sqlite> .mode csv
sqlite> .import table1.csv table1
$ sqlite3 db2
sqlite> .read table1.sql
Ejemplo práctico
Un ejemplo práctico de todo ésto me tocó hace poco, cuando empezaron a desaparecer sin motivo aparente los posts del foro de Vamos a Vidas. Lo que luego resultó ser un problema de programación (ya corregido) pasó por una fase de mezcla de migraciones con recuperación de datos de un backup anterior, así que tocó jugar con los import / export de SQLite antes de mover los datos a producción. Pudo ser algo tal que así:
$ sqlite3 vav-old.db
sqlite> .mode insert rforum_postw
sqlite> .out rforum_postw.sql
sqlite> select * from rforum_posts;
$ sqlite3 vav-new.db
sqlite> .read rforum_posts.sql
Por lo tanto ya sabéis, cuando no os toméis en serio las migraciones de bases de datos, al menos tened en cuenta este tipo de operaciones para salir del paso.