J'essaie d'importer un fichier csv dans une table SQLite.
Exemple csv:
1,2
5,6
2,7
Exemple de commande:
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
Je ne sais même pas pourquoi on trouverait quatre colonnes avec six données et deux colonnes. De l'aide? :)
Ce qui est également dit dans les commentaires, SQLite voit votre entrée comme 1, 25, 62, 7. J'ai également eu un problème avec, et dans mon cas, il a été résolu en changeant "séparateur" en ".mode csv". Pour que vous puissiez essayer:
sqlite> create table foo(a, b);
sqlite> .mode csv
sqlite> .import test.csv foo
La première commande crée les noms de colonne pour la table. Toutefois, si vous souhaitez que les noms de colonne soient hérités du fichier csv, vous pouvez simplement ignorer la première ligne.
Voici comment je l'ai fait.
Entrez le shell sqlite de la base de données à laquelle les données doivent être ajoutées
sqlite> .separator "\t" ---IMPORTANT! should be in double quotes sqlite> .import afile.csv tablename-to-import-to
Je fusionne les informations des réponses précédentes avec ma propre expérience. Le plus simple consiste à ajouter les en-têtes de tableau séparés par des virgules directement dans votre fichier csv, suivis d'une nouvelle ligne, puis de toutes vos données csv.
Si vous ne faites plus jamais de trucs sqlite (comme moi), cela pourrait vous faire économiser une ou deux recherches sur le Web:
Dans le Sqlite Shell, entrez:
$ sqlite3 yourfile.sqlite
sqlite> .mode csv
sqlite> .import test.csv yourtable
sqlite> .exit
Si Sqlite n’est pas installé sur votre Mac, lancez
$ brew install sqlite3
Vous devrez peut-être effectuer une recherche sur le Web pour savoir comment installer Homebrew.
avant la commande .import, tapez ".mode csv"
Avec termsql, vous pouvez le faire en une seule ligne:
termsql -i mycsvfile.CSV -d ',' -c 'a,b' -t 'foo' -o mynewdatabase.db
J'ai eu exactement le même problème (sur OS X Maverics 10.9.1 avec SQLite3 3.7.13, mais je ne pense pas que SQLite est lié à la cause). J'ai essayé d'importer des données CSV enregistrées à partir de MS Excel 2011, ce qui en fait. utilise ';'
comme séparateur de colonnes. J'ai découvert que le fichier csv d'Excel utilise toujours le caractère de nouvelle ligne de Mac OS 9 fois, en le changeant en unix Newline a résolu le problème. AFAIR BBEdit a une commande pour cela, ainsi que Sublime Text 2.
Comment importer un fichier csv dans sqlite3
Créer une base de données
sqlite3 NYC.db
Définir le mode et le nom du fichier
.mode csv tripdata
Importer les données du fichier csv dans sqlite3
.import yellow_tripdata_2017-01.csv tripdata
Trouver des tables
tables
Trouvez votre schéma de table
.schema tripdata
Trouver des données de table
select * from tripdata limit 10;
Comptez vos données de table
select count (*) from tripdata;