web-dev-qa-db-fra.com

Importer CSV en 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 sais même pas pourquoi on trouverait quatre colonnes avec six données et deux colonnes. De l'aide? :)

96
Molly Walters

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.

129
NumesSanguis

Voici comment je l'ai fait.

  • Créer/Convertir un fichier csv à séparer par des tabulations (\ t) ET ne pas être encadré par des guillemets (sqlite interprète les guillemets littéralement - dit les anciens documents)
  • 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

23
gyaani_guy

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.

15
lukas_o

avant la commande .import, tapez ".mode csv"

5
zeo

TERMSQL

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

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

3
user3573558

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.

2
adass

Comment importer un fichier csv dans sqlite3

  1. Créer une base de données

    sqlite3 NYC.db
    
  2. Définir le mode et le nom du fichier

    .mode csv tripdata
    
  3. Importer les données du fichier csv dans sqlite3

    .import yellow_tripdata_2017-01.csv tripdata
    
  4. Trouver des tables

    tables
    
  5. Trouvez votre schéma de table

    .schema tripdata
    
  6. Trouver des données de table

    select * from tripdata limit 10;
    
  7. Comptez vos données de table

    select count (*) from tripdata;
    
1
sivamani