tables sqlite sqlite3

sqlite3 show tables



Importar CSV a SQLite (6)

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? :)


Así es como lo hice.

  • Hacer / Convertir el archivo csv para separarlo por pestañas (/ 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.


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


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.


antes del comando .import, escribe ".mode csv"


TERMSQL

Con termsql puedes hacerlo en una línea:

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