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"
Con termsql puedes hacerlo en una línea:
termsql -i mycsvfile.CSV -d '','' -c ''a,b'' -t ''foo'' -o mynewdatabase.db