Importar CSV a SQLite

Estoy tratando de importar un archivo csv a una tabla SQLite.

Ejemplo csv:

1,2 5,6 2,7 

Ejemplo de comando:

 sqlite> create table foo(a, b); sqlite> separator , sqlite> .import test.csv foo Error: test.csv line 1: expected 2 columns of data but found 4 

Ni siquiera estoy seguro de por qué encontraría cuatro columnas con seis datos y dos columnas. ¿Alguna ayuda? 🙂

Lo que también se dice en los comentarios, SQLite ve su entrada como 1, 25, 62, 7. También tuve un problema, y ​​en mi caso se solucionó cambiando “separador” a “.mode csv”. Entonces podrías probar:

 sqlite> create table foo(a, b); sqlite> .mode csv sqlite> .import test.csv foo 

Así es como lo hice.

  • Hacer / Convertir el archivo csv para separarlo por tabs (\ t) Y no encerrado por ninguna comilla (sqlite interpreta citas literalmente – dice documentos antiguos)
  • Ingrese el shell sqlite del db al que se deben agregar los datos

    sqlite> .separator "\t" ---IMPORTANT! should be in double quotes sqlite> .import afile.csv tablename-to-import-to

Estoy fusionando información de respuestas anteriores aquí con mi propia experiencia. Lo más fácil es agregar los encabezados de tabla separados por comas directamente a su archivo csv, seguido de una nueva línea y luego todos sus datos de csv.

Si nunca vuelve a hacer cosas de sqlite (como yo), esto podría ahorrarle una búsqueda web o dos:

En el shell Sqlite, ingrese:

 $ sqlite3 yourfile.sqlite sqlite> .mode csv sqlite> .import test.csv yourtable sqlite> .exit 

Si no tienes instalado Sqlite en tu Mac, ejecuta

 $ brew install sqlite3 

Es posible que deba hacer una búsqueda web sobre cómo instalar Homebrew.

antes del comando .import, escribe “.mode csv”

Tuve exactamente el mismo problema (en OS X Maverics 10.9.1 con SQLite3 3.7.13, pero no creo que SQLite esté relacionado con la causa). Traté de importar datos de csv guardados de MS Excel 2011, que por cierto. usa ';' como separador de columnas Descubrí que el archivo csv de Excel todavía usa el carácter de nueva línea de Mac OS 9 veces, cambiándolo a la línea nueva de Unix resolvió el problema. AFAIR BBEdit tiene un comando para esto, así como Sublime Text 2.

TERMSQL

Con termsql puedes hacerlo en una línea:

termsql -i mycsvfile.CSV -d ',' -c 'a,b' -t 'foo' -o mynewdatabase.db