Exportar datos de SQLite 3

Necesito una forma simple de exportar datos de una database SQLite de múltiples tablas, y luego importarlas a otra database.

Aquí está mi escenario. Tengo 5 tablas: A, B, C, D, E.

Cada tabla tiene una key principal como la primera columna llamada ID. Quiero un command de Unix que arrojará SÓLO los datos en la fila desde la key principal en un formatting que pueda importarse a otra database.

Sé que puedo hacer un

sqlite3 db .dump | grep INSERT 

pero eso me da TODOS los datos en la tabla. No soy un experto en bases de datos, y trato de hacer esto con todos los commands de Unix en los que puedo escribir un script de shell, en lugar de escribir código C ++ para hacerlo (porque eso es lo que la gente me dice que es la manera más fácil) . Me niego a escribir código C ++ para realizar una tarea que se puede hacer en 4 a 5 instrucciones desde la command-line.

¿Alguna sugerencia?

Esto puede parecer un poco extraño, sin embargo puedes intentarlo:

Crea un file de text y coloca las siguientes declaraciones allí:

 .mode insert .output insert.sql select * from TABLE where STATEMENT; -- place the needed select query here .output stdout 

Alimentar este file a sqlite3:

 $ sqlite3 -init initf DATA.DB .schema > schema.sql 

Como resultado obtendrá dos files: uno con "inserciones" simples ( insert.sql ) y otro con esquema db ( schema.sql ).

Sugiera encontrar una herramienta que pueda tomar su consulta y exportarla a un file CSV. Parece que querías un guión. ¿Querías reutilizar y automatizar esto?

Para otros escenarios, tal vez considere el plugin Firefox de sqlite-manager . Admite la ejecución de consultas adhoc y la export de los resultados a un file CSV.

Dentro de eso, dale esta statement:

  SELECT ID FROM TableA 

Repita para cada tabla como lo necesite.

también puede usar la function de quote de SQLite.

 echo "SELECT 'INSERT INTO my_new_table (my_new_key) VALUES (' || quote(my_old_key) || ');' FROM my_old_table;" | sqlite my_table > statements.sql