Importar y exportar CSV TSV a SQLite - nshandra/practica_final-ISI_18-19 GitHub Wiki

Importar y exportar CSV/TSV a SQLite

La diferencia entre CSV y TSV es el separador entre los campos, en este caso coma(,) o tabulador(\t).

Los comandos proporcionados son para la interfaz en terminal de SQLite3 sqlite3 [db]

Para trabajar con CSV se usa .mode csv

Para TSV .mode tabs

IMDb exporta su base de datos en TSV.

Importar

Antes de importar el fichero es recomendable revisarlo para ver que no tiene errores. Si es un fichero grande se puede usar head [file] para ver las primeras lineas e incluso exportarlas a un fichero temporal para hacer pruebas de importación head [file] > [tempfile].

En caso de que el fichero tenga una cabecera con los nombres de los campos hay que eliminar esa linea antes de importar sed -i '1d' [file]. Esa linea se puede usar para la definición de los nombres de los campos de la tabla.

A veces es necesario reemplazar caracteres como " por ' ya que dan problemas (unterminated " quoted field). Esto se puede hacer con comandos de terminal como sed o con funciones de Buscar/Remplazar de un editor de texto.

CREATE TABLE [table](
  [field];
  ..
);
.import [file] [table]

Exportar

A fichero CSV/TSV.

.output [file]
SELECT * FROM [table];
.output stdout

También se pueden usar queries mas complejas, por ejemplo, para exportar las 100 primeras películas mas votadas.

.output [file]
SELECT basics.* FROM basics
INNER JOIN ratings ON basics.ID = ratings.ID
ORDER BY numVotes DESC
LIMIT 100;
.output stdout

A fichero .sql.

.output [file]
.dump [table]
.output stdout

Si no se le especifica un argumento a .dump vuelca la base de datos entera.

Referencias