IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

SQLite et import csv


Sujet :

Android

  1. #1
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut SQLite et import csv
    Bonjour tout le monde,

    Ne trouvant de réponse nulle part, j'en appelle à vous...

    J'aimerai charger une grosse base de données (quelques centaines de milliers de lignes) afin de la rendre disponible pour mon appli. Ces données, je les ai au format csv, ce qui normalement est le plus performant pour charger une BD.

    J'ai donc pensé utiliser la base de données fournie SQLite (classe SQLiteOpenHelper).

    Mais voila, quelle est la commande SQL (ou code Java ?) qui me permettrait d'importer ce csv sans devoir lire moi même le fichier et surtout insérer ligne par ligne dans ma table ?

    J'ai testé la manière bateau, ouvrir le fichier, le lire ligne par ligne, et insérer ces lignes dans la BD, mais j'en ai pour 20 minutes de calcul ! Il me faut à tout prix optimiser ça !

    Avez-vous une idée ?

    Merci d'avance pour toute aide ou toute piste !

  2. #2
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Je ne m'y connais pas beaucoup sur le sujet, mais il existe une commande sous sqllite pour importer des fichiers csv.

    http://www.sqlite.org/cvstrac/wiki?p=ImportingFiles

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Par défaut
    Bonjour ,

    Je suis actuellement sur le même genre de recherche (import CSV / Txt / .db).

    Pour le CSV il semblerais que des bibliothèques existe pour simplifier la tache , mais je n'ai pas encore réussi a mettre en place ...

    SuperCSV est sur lequel j'ai essayer de faire des essayes ce matin mais ... sans trop de succès (les tutoriaux sont mince et peu clair mais si tu peu trouver a solutionné )

    http://sourceforge.net/projects/supercsv/

    http://www.xinotes.org/notes/note/1379/


    C'est bien dommage que ce genre de "demande" ne soit pas pris en compte dans les livres tels que "Developpement Android" , et les Formation Video2brain (qui est au passage un passage sur les chapitre du livre ... )

    Cordialement ,

  4. #4
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    J'ai finalement opté pour une autre stratégie, à savoir changer de SGBD.
    Car le SQLite embarqué dans android, en plus de rendre impossible l'importation CSV, il ne peut pas posséder de tables avec plus de 10 000 lignes... Or dans mon application, j'en ai besoin de 4 fois plus...

    Je suis passé sous H2, l'import CSV fonctionne et est relativement plus rapide, et me permet en plus de gérer une BD de la taille qui me convient.

  5. #5
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    il ne peut pas posséder de tables avec plus de 10 000 lignes.
    Juste par curiosité d'où tires tu cette informations ?
    Personnellement il me semblait que la limite était celle imposé par sqlite soit 9223372036854775807.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Par défaut
    H2 est compatible Android ?

    Pour les 10.000lignes il me semble que c'est plus effectivement (je suis sur 38.000enregistrement moi). Après peut être que pour une optimisation de temps il faille mieux en mettre 10.000 c'est possible.

    Tu peux nous faire un petit briefing sur H2 au passage, je ne connais pas du tout , mais peu être intéressant.

    Cordialement ,

  7. #7
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Je n'ai pas trouvé de source "fiable", mais j'ai trouvé plusieurs site où certains utilisateurs faisaient référence à cela.

    Par exemple :

    http://forums.oracle.com/forums/thre...203&tstart=135

    http://stackoverflow.com/questions/5...its-in-android

  8. #8
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Pour H2 et android, vous pouvez aller sur le site officiel de H2 : http://www.h2database.com/html/tutorial.html#android


  9. #9
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    ben justement dans le premier lien sur le forum oracle il précise bien ensuite la taille maximum de 1048576 soit ici (il la donne):
    -DSQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576 \
    Sur le deuxième lien il donne comme référence le site de sqllite :

    Maximum Number Of Rows In A Table

    The theoretical maximum number of rows in a table is 2^64 (18446744073709551616 or about 1.8e+19). This limit is unreachable since the maximum database size of 14 terabytes will be reached first. A 14 terabytes database can hold no more than approximately 1e+13 rows, and then only if there are no indices and if each row contains very little data.
    Ce qui semble en effet important . Mais bon je pense que tu as le temps avant d'exploser la taille de ta bd.

    http://www.sqlite.org/limits.html

  10. #10
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Certes mais ça n'explique pas pourquoi au bout d'un moment, si je remplie ma BD à fond, toutes mes tables se retrouvent vides... Je n'ai pas cherché à trouver la limite exacte, mais ma BD remplie contient environ 50 000 lignes. Si je la rempli un peu, je retrouve bien mes enregistrements, si je la remplie entièrement, je n'ai subitement plus aucun enregistrement dans toutes mes tables...

    J'ai donc pensé que c'était lié à cette "soft limitation" qu'ils appellent... même si je ne trouve pas de source officielle parlant de ce problème... (ce qui m'embête, je vous l'accorde...)

  11. #11
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Si je la rempli un peu, je retrouve bien mes enregistrements, si je la remplie entièrement, je n'ai subitement plus aucun enregistrement dans toutes mes tables...
    Peut être que cela n'est pas forcément dû à un problème de taille de Base de Donnée ...

  12. #12
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    C'est possible en effet, mais je n'ai aucune erreur qui s'affiche dans le DDMS, tout semble se dérouler comme prévu, sauf que ma BD est vide... Peut-être qu'il y avait un problème de mémoire, mais bizarre qu'aucune erreur ne me soit retournée...

    De toute façon, je ne peux plus approfondir ce bug étrange maintenant, puisque je suis passé sous H2, et que l'import CSV me satisfait pleinement !

    Quoiqu'il en soit, merci pour ton intérêt à mon problème

  13. #13
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    De toute façon, je ne peux plus approfondir ce bug étrange maintenant, puisque je suis passé sous H2, et que l'import CSV me satisfait pleinement !

    Quoiqu'il en soit, merci pour ton intérêt à mon problème
    Désolé d'avoir était insistant , c'était juste pour savoir réelement s'il y avait une taille maximum au base de donnée sous android, j'ai vu pas mal de chose la dessus, et jamais une réponse concrète...

  14. #14
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Je comprends bien, et j'apprécie ta quête d'informations !

    Malheureusement je n'en sais guère plus sur le sujet... je pensais avoir trouvé la raison de mon drôle de bug, mais en effet, impossible de trouver l'information claire... et du coup tu as raison, cette limitation semble n'être que rumeur... Cependant, il y a un drôle de truc la dessous, car une BD qui devient vide alors que je la remplie, sans qu'aucun message d'erreur n'intervienne, c'est plus que louche...

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 542
    Par défaut
    moi je viens juste de tester cette ligne pour l'import de csv mais cela ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    db.execSQL("CREATE TABLE " + MY_DATABASE_TABLE
    					+ " AS SELECT * FROM CSVREAD('/sdcard/file.csv');");
    Il m'indique syntax error near '('

  16. #16
    Rédacteur
    Avatar de Viish
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 427
    Par défaut
    Et si tu essayes avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    db.execSQL("CREATE TABLE " + MY_DATABASE_TABLE
    					+ " AS SELECT * FROM CSVREAD(\"/sdcard/file.csv\");");
    ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Import CSV ou XML dans SQLITE
    Par IPreferCSharp dans le forum VB.NET
    Réponses: 21
    Dernier message: 16/10/2013, 12h38
  2. SQLite avec VB.NET : commande pour importer CSV
    Par Aukys dans le forum VB.NET
    Réponses: 3
    Dernier message: 01/11/2010, 14h16
  3. Réponses: 7
    Dernier message: 11/05/2010, 13h28
  4. import csv décimale
    Par gIch dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 13/12/2005, 12h46
  5. Importation CSV vers base de données
    Par Brice Yao dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/06/2005, 13h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo