¿Cómo importar un archivo .sql o .csv en SQLite?

Necesito volcar un archivo .sql o .csv en SQLite (estoy usando SQLite3 API). Solo encontré documentación para importar / cargar tablas, no bases de datos completas. En este momento, cuando escribo:

sqlite3prompt> .import FILENAME TABLE 

Obtengo un error de syntax, ya que está esperando una tabla y no un DB completo.

Para importar desde un archivo SQL, use lo siguiente:

 sqlite> .read  

Para importar desde un archivo CSV, necesitará especificar el tipo de archivo y la tabla de destino:

 sqlite> .mode csv  sqlite> .import  

Intenta hacerlo desde el comando como:

 cat dump.sql | sqlite3 database.db 

Obviamente, esto solo funcionará con sentencias SQL en dump.sql. No estoy seguro de cómo importar un archivo CSV.

Para pasar de SCRATCH con SQLite DB a importar el CSV en una tabla:

  • Obtenga SQLite del sitio web.
  • En un símbolo del sistema, ejecute sqlite3 * Se creará como un archivo vacío.
  • Crea una nueva tabla en tu nueva base de datos. La tabla debe coincidir con los campos CSV para importar.
  • Haga esto mediante el comando SQL: CREATE TABLE ( , );

Una vez que haya creado la tabla y las columnas coincidan con sus datos del archivo, puede hacer lo anterior …

 .mode csv  .import   

El comando sqlite3 .import no funcionará para datos csv ordinarios porque trata cualquier coma como un delimitador incluso en una cadena entrecomillada.

Esto incluye tratar de volver a importar un archivo csv que fue creado por el shell:

 Create table T (F1 integer, F2 varchar); Insert into T values (1, 'Hey!'); Insert into T values (2, 'Hey, You!'); .mode csv .output test.csv select * from T; Contents of test.csv: 1,Hey! 2,"Hey, You!" delete from T; .import test.csv T Error: test.csv line 2: expected 2 columns of data but found 3 

Parece que debemos transformar el csv en una lista de instrucciones Insert, o quizás funcione un delimitador diferente.

En SuperUser vi una sugerencia de usar LogParser para tratar con archivos csv, voy a investigar eso.

Si está contento de utilizar una secuencia de comandos (python), entonces hay una secuencia de comandos de python que automatiza esto en: https://github.com/rgrp/csv2sqlite

Esto creará automáticamente la tabla para usted, así como también hará algunos cálculos básicos de tipo y de datos para usted (por ejemplo, se resolverá que algo es un número y establecerá el tipo de columna en “real”).

Recuerde que el delimitador predeterminado para SQLite es el conducto “|”

 sqlite> .separator ";" sqlite> .import path/filename.txt tablename 

http://sqlite.awardspace.info/syntax/sqlitepg01.htm#sqlite010

SQLite es extremadamente flexible ya que también permite los comandos de puntos específicos de SQLite en la syntax de SQL (aunque la CLI los interpreta). Esto significa que puede hacer cosas como esta.

Crea una tabla de sms como esta:

 # sqlite3 mycool.db '.schema sms' CREATE TABLE sms (_id integer primary key autoincrement, Address VARCHAR, Display VARCHAR, Class VARCHAR, ServiceCtr VARCHAR, Message VARCHAR, Timestamp TIMESTAMP NOT NULL DEFAULT current_timestamp); 

Luego dos archivos:

 # echo "1,ADREZZ,DizzPlay,CLAZZ,SMSC,DaTestMessage,2015-01-24 21:00:00">test.csv # cat test.sql .mode csv .header on .import test.csv sms 

Para probar la importación del archivo CSV utilizando el archivo SQL, ejecute:

 # sqlite3 -csv -header mycool.db '.read test.sql' 

En conclusión, esto significa que puede usar la instrucción .import en SQLite SQL, tal como lo puede hacer en cualquier otra RDB, como MySQL con LOAD DATA INFILE etc. Sin embargo, esto no es recomendable.

Verifique los términosql. https://gitorious.org/termsql https://gitorious.org/termsql/pages/Home

Convierte texto a SQL en la línea de comando. (CSV es solo texto)

Ejemplo:

 cat textfile | termsql -o sqlite.db 

De forma predeterminada, el delimitador es un espacio en blanco, por lo que para que funcione con CSV que usa comas, lo harías así:

 cat textfile | termsql -d ',' -o sqlite.db 

alternativamente puedes hacer esto:

 termsql -i textfile -d ',' -o sqlite.db 

Por defecto, generará los nombres de columna “COL0”, “COL1”, si quiere que use la primera fila para los nombres de las columnas, haga esto:

 termsql -i textfile -d ',' -1 -o sqlite.db 

Si desea establecer nombres de columna personalizados, haga esto:

 termsql -i textfile -d ',' -c 'id,name,age,color' -o sqlite.db 

si lo está usando en Windows, asegúrese de agregar la ruta de acceso a la base de datos en “” y también usar doble barra inclinada en la ruta para asegurarse de que Windows lo entienda.

Esta es la forma en que puede insertar en una columna de identidad:

 CREATE TABLE my_table (id INTEGER PRIMARY KEY AUTOINCREMENT, name COLLATE NOCASE); CREATE TABLE temp_table (name COLLATE NOCASE); .import predefined/myfile.txt temp_table insert into my_table (name) select name from temp_table; 

myfile.txt es un archivo en C: \ code \ db \ predefined \

data.db está en C: \ code \ db \

myfile.txt contiene cadenas separadas por carácter de nueva línea.

Si desea agregar más columnas, es más fácil separarlas usando el carácter de tubería, que es el predeterminado.

Importe su csv o sql a sqlite con phpLiteAdmin , es excelente.