Estoy tratando de importar un archivo csv a una tabla SQLite.
Ejemplo csv:
1,2
5,6
2,7
Comando de ejemplo:
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.
6 - 2 = 4
\r\n
en Windows,\n
en * nix (incluye Mac más nuevas),\r
en Mac más antiguas.Respuestas:
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 resolvió cambiando "separador" por ".mode csv". Entonces podrías intentar:
El primer comando crea los nombres de las columnas de la tabla. Sin embargo, si desea que los nombres de las columnas se hereden del archivo csv, puede simplemente ignorar la primera línea.
fuente
create table
comando y sqlite usará los nombres de las columnas del archivo csv.Year,Make,Model,Description,Price
y no los datos reales. Si ese es el caso con su archivo CSV, entonces no necesita crear manualmente la tabla usando elcreate table
comando. El.import
comando utilizará la primera línea de su archivo para determinar los nombres de las columnas y crear la tabla en consecuencia. Aún debe incluir el nombre de la tabla en el comando. La misma información de los documentos SQLite ..mode
? ¿No es eso solo para la salida?type
para el nombre de una columna CSV.Así es como lo hice.
Ingrese el shell sqlite de la base de datos a la que se deben agregar los datos
sqlite> .separator "\t" ---IMPORTANT! should be in double quotes sqlite> .import afile.csv tablename-to-import-to
fuente
.separator "\t" "\r"
Estoy fusionando información de respuestas anteriores aquí con mi propia experiencia. Lo más fácil es agregar los encabezados de la tabla separados por comas directamente a su archivo csv, seguido de una nueva línea, y luego todos sus datos csv.
Si nunca vuelve a hacer cosas de sqlite (como yo), esto podría ahorrarle una búsqueda en la web o dos:
En el shell de Sqlite ingrese:
Si no tiene Sqlite instalado en su Mac, ejecute
Es posible que deba hacer una búsqueda en la web para saber cómo instalar Homebrew.
fuente
unescaped " character
alertas?antes del comando .import, escriba ".mode csv"
fuente
Cómo importar un archivo csv a sqlite3
Crear base de datos
Establecer el modo y el nombre de la tabla
Importe los datos del archivo csv a sqlite3
Buscar tablas
Encuentra tu esquema de tabla
Buscar datos de la tabla
Cuente el número de filas en la tabla
fuente
Con Termsql puedes hacerlo en una línea:
termsql -i mycsvfile.CSV -d ',' -c 'a,b' -t 'foo' -o mynewdatabase.db
fuente
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 csv guardados desde MS Excel 2011, que por cierto. utiliza
';'
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, cambiarlo a unix nueva línea resolvió el problema. AFAIR BBEdit tiene un comando para esto, así como Sublime Text 2.fuente
tr -s '\r' '\n'
y funcionará con todo tipo de archivos aleatorios.Sigue los pasos:-
fuente
Como especifican algunos sitios web y otros artículos, es simple echar un vistazo a este. https://www.sqlitetutorial.net/sqlite-import-csv/
No necesitamos especificar el separador para el
csv
archivo, porque csv significa separado por comas.sqlite> .separator ,
no hay necesidad de esta línea.Esto funcionará perfectamente :)
PD: My cities.csv con encabezado.
fuente
.save someFileName
al final. Me tomó una hora encontrar esto para finalmente exportarlo en el archivo de base de datos de memoria al disco 😅