Import CSV vers SQLite

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 suis même pas sûr pourquoi il y aurait quatre colonnes avec six éléments de données et deux colonnes. De l’aide? 🙂

Ce que l’on dit aussi dans les commentaires, SQLite considère vos entrées comme 1, 25, 62, 7. J’ai aussi eu un problème avec, et dans mon cas, cela a été résolu en changeant “separator” en “.mode csv”. Donc, vous pouvez essayer:

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

Voici comment je l’ai fait.

  • Créer / Convertir un fichier csv à séparer par des tabulations (\ t) ET non entre guillemets (sqlite interprète littéralement les citations – dit les anciens documents)
  • Entrez le shell sqlite de la firebase database à 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 est d’append 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 choses sqlite (comme moi), cela pourrait vous faire économiser deux recherches sur le Web:

Dans le shell Sqlite, entrez:

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

Si vous n’avez pas installé Sqlite sur votre Mac, exécutez

 $ brew install sqlite3 

Vous devrez peut-être faire une recherche sur le Web pour savoir comment installer Homebrew.

avant la commande .import, tapez “.mode csv”

J’ai exactement le même problème (sous OS X Maverics 10.9.1 avec SQLite3 3.7.13, mais je ne pense pas que SQLite soit lié à la cause). J’ai essayé d’importer des données csv enregistrées à partir de MS Excel 2011, ce qui est d’ailleurs le cas. utilise ';' comme séparateur de colonnes. J’ai découvert que le fichier csv d’Excel utilisait toujours le caractère newline de Mac OS 9 fois, le changeant en unix newline résolvait le problème. AFAIR BBEdit a une commande pour cela, ainsi que Sublime Text 2.

TERMSQL

Avec termsql, vous pouvez le faire en une seule ligne:

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