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

SQLite Discussion :

Règles pour importer du texte dans une base sqlite


Sujet :

SQLite

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Règles pour importer du texte dans une base sqlite
    Bonjour,

    je suis très très débutant et j'essaie de réaliser un Quizz en Python 2.6 + sqlite 3.

    Le but étant d'importer les données dans sqlite à partir d'un fichier csv saisi dans OpenOffice pour des raisons de facilité de manipulation.
    Je n'arrive pas à importer les données pour semble-t-il des raisons de format unicode ou je ne sais quoi.

    J'ai parcouru plusieurs forum sur les formats mais je n'y comprend pas grand chose.

    Auriez-vous un conseil ou un exemple de code permettant d'importer des données en masse dans sqlite svp.

    Merci.

    Pour info, voici le lien du problème que j'ai détaillé dans la rubrique Python : lien

    Dominique.

  2. #2
    Membre actif Avatar de ronan99999
    Inscrit en
    Juillet 2003
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 279
    Points : 299
    Points
    299
    Par défaut
    Bonjour,
    tes données text sont elles bien entourées par des simples cotes

    exmeple:

    INSERT INTO toto(name) VALUES('nimp');

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut cotes
    oui.

    si tu cliques sur le lien du message au dessus, tu verras en bas de la page la ligne que j'importe (en bleu) et le message d'erreur en rouge.

    Merci de m'aider car je cale !!

  4. #4
    Membre actif

    Inscrit en
    Décembre 2004
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 169
    Points : 225
    Points
    225
    Par défaut
    Bonjour vous deux,

    je passe en vitesse et je vais tenter d'apporter des pistes ...
    1) ton fichier python commence par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #! /usr/bin/env python
    #-*- coding: utf-8 -*-
    Donc, tu es en utf-8 dans ce script.
    2) SQlite code ses chaînes en utf-8 en interne, cependant il utilise le format d'entrée de la plateforme que tu utilises. Dans ton cas c'est le format de python et/ou linux.
    Pour ma part, je code sous Windows (notepad par exemple) et j'utilise le DOS pour tester SQlite, donc j'ai des problèmes d'accentués dans mes fenêtres DOS mais mes exports relus depuis Windows sont OK.
    3) Ton erreur indique que tu ne dois pas utiliser un format 8 bit en entrée de ton script python. Il te faut de l'unicode. On t'a déjà indiqué ce lien http://sebsauvage.net/python/charsets_et_encoding.html sur l'autre forum.
    Tu devrais donc tester ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/usr/bin/python
    # -*- coding: iso-8859-1 -*-
    4) Du coup, tu peux sauvegarder ton fichier csv depuis OpenOffice dans le format iso-8859-1 comme te le propose ta propre copie d'écran du forum python.

    5) Pour fini, je te propose que tu fasses un essai avec un script beaucoup plus simple pour commencer. Lorsque tu y arriveras, tu passeras par étapes au script actuel.
    Par exemple : crées une table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE liste (proprio     VARCHAR (60))
    et c'est tout. Et si tu arrives à l'alimenter en direct sans passer par un csv alors tu auras bien avancé dans ton problème. Dans ton script unicode, n'oublies pas cette règle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mauvaiseChaine = "Mauvaise chaine !"
    bonneChaine = u"Bonne chaine Unicode."
    Bonne chance,
    a+

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut MERCI
    Merci pour toutes ces indications, je vais tester de ce pas.
    Je suis bien allé voir ce lien mais ce que je ne comprends pas c'est qu'à chaque fois on donne des indications pour changer des codes en particulier comme 'oeuvre" ais pas pour faire des imports en masse avec plein de caractères différents.

    Comme le fameux 'u' que l'on met devant, comment fait-on pour un str ou des éléments d'une liste ?

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Résolu
    Yes !
    J'y suis arrivé, il suffisait de mettre item_0 = item[0].decode('iso-8859-1') devant chaque champ.

    ça marche.

    je vais voir à présent si c'est exploitable.

    merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/05/2014, 08h41
  2. Réponses: 4
    Dernier message: 11/03/2011, 14h45
  3. [phpMyAdmin] Utilitaire pour importer du xml dans une base csv joomla/virtuemart
    Par izycash dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 27/11/2010, 13h24
  4. [SQLITE] Commande pour importer un csv dans une db sqlite à partir de PHP
    Par kaboume dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/09/2008, 15h15
  5. Réponses: 2
    Dernier message: 09/04/2007, 21h52

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