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

Requêtes MySQL Discussion :

Importer des donnees avec fichier txt


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Points : 22
    Points
    22
    Par défaut Importer des donnees avec fichier txt
    bonjour,

    je voudrai importer les donnees que j'avais dans une base access. je les est donc exporter en .txt et j'ai recreer ma base avec mysql. le probleme est que je n'arrive pas a importer les infos du fichier.
    j'utilise la commande suivante : LOAD DATA LOCAL INFILE 'C:\\student.csv' INTO TABLE `student`
    il n'y a pas d'erreur mais cela me dit : Nombre d'enregistrements insérés : -1 (traitement: 0.0007 sec.)

    savez vous comment faire?

    merci de votre aide
    flOZ

  2. #2
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Bonjour,

    Sur quel ordinateur se trouve :
    • la base de données
    • le fichier à importer
    • la personne exécutant le script
    En fait, j'ai une interrogation par rapport au mot 'LOCAL'.

  3. #3
    Membre habitué
    Inscrit en
    Mai 2004
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 129
    Points : 127
    Points
    127
    Par défaut
    Tu dois aussi définir les séparateurs de champs dans ton LOAD DATA INFILE

    ++

  4. #4
    Invité
    Invité(e)
    Par défaut
    A priori format csv = séparateur virgule.
    Par défaut MySql utilise une tabulation.
    Déjà ça ne risque pas de marcher.
    Ajoute:
    TERMINATED BY ','

    si le séparateur est une virgule.

    La fin de ligne peut aussi être un problème, dans ce cas:
    LINES TERMINATED BY '<ce qui va bien>';

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par Adjanakis
    Bonjour,

    Sur quel ordinateur se trouve :
    • la base de données
    • le fichier à importer
    • la personne exécutant le script
    En fait, j'ai une interrogation par rapport au mot 'LOCAL'.
    la base de données se trouve sur un serveur distant
    le fichier a importer est sur mon PC (je l'ai au format TXT et CSV)

    j'ai egalement essayer de placer le fichier a la racine sur le serveur mais j'ai pas reussi non plus

    Prenons un exemple peut etre que je comprendrais. J'ai un fichier student.txt qui se prensente comme ca:
    "ID" "Last_Name" "FirstName"
    1 "OZ" "FLO"
    2 "mon nom" "mon prenom"
    separer par des tab qui se termine par un \n et delimiter par des "" sauf le pour l'id
    je fais donc : LOAD DATA LOCAL INFILE 'C:\\student.txt' INTO TABLE `student` FIELDS TERMINATED BY '\t' ENCLOSED BY '"' LINES TERMINATED BY '\n';
    pouvez vous m'expliquer pourquoi ca ne marche pas? est ce un probleme d'acces au fichier a cause du local?

    merci de votre aide car je suis vraiment perdu

  6. #6
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    C'est vrai, pour importer du format csv il faut ajouter les options citées précédemment. Cependant ici le vrai problème, à mon humble avis, c'est que la commande répond que -1 enregistrement a été ajouté.

    • Quel est l'outil utilisé pour envoyer les requêtes ?
    • Quelle est la version de MySQL utilisée ?
    • As-tu fais les vérifications suggérée implicitement par le lien que tu as donné ?(--local-infile=0, etc...)

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    POur envoyer la requete j'utilise phpMyAdmin - 2.8.0.1 et ma base est uneMySQL - 4.1.14-log

    pour ce qui est des commande tel que
    l'option --local-infile=0 j'en est essayé certaine mais sans succes

  8. #8
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Serait-il possible de tenter l'expérience avec un bon vieux mysql(l'utilitaire) ?

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Quelques éléments de réponse possibles
    Bonjour à tous,
    Bien que relativement novice, je me suis déjà heurté au problème et je vais faire état ici des difficultés et solutions possibles sous mysql 4.0.21.
    Pour ma part je procède par scripts mysql de type en ligne de commande, mais cela fonctionne parfaitement avec phpMyAdmin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    USE mybd;
    LOAD DATA LOCAL INFILE '../txt/monfichier.txt'
    INTO TABLE matable
    LINES TERMINATED BY '\r\n' (monchamp1, monchamp2,...,monchampn);
    1. J'ai opté pour une localisation relative et non absolue qui plante immanquablement.
    2. Etant sous windows, je déclare mes lignes terminées par \r\n Attention !!! seul MS WordPad est capable de modifier correctement les fichiers texte. Quoi qu'il en soit, je vérifie toujours avec EDIT.COM sous dos.
    3. Choisir de délimiter les valeurs des champs par un caractère quelconque (guillements, apostrophe, etc.) risque à un moment ou un autre de poser problème, le plus simple est la valeur par défaut : rien (c'est facultatif)
    4. Comme séparateur de champs (c'est obligatore), j'ai fait simple : la valeur par défaut, à savoir la tabulation, codée \t sous phpMyAdmin, un tab sous n'importe quel traitement de texte.
    5. Bien sûr, il faut respecter la syntaxe suivante :
    une ligne LOAD ...; par table ; absolument tous les champs même nuls, vides, ou avec une valeur par défaut doivent figurer et dans le script et surtout dans le fichier de données simplement séparés de tabulations (mysql détecte l'absence de valeur et fixe la valeur par défaut), sinon plantage garanti.
    Après cela insérer ou mettre à jour des centaines (je sais, c'est peu) d'enregistements se fait en un (presque) clin d'oeil.
    J'espère que ma contribution aura été utile.
    Cordialement

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/03/2015, 19h45
  2. importer des donnees txt dans Excel
    Par bakaratoun dans le forum Excel
    Réponses: 0
    Dernier message: 06/02/2011, 14h20
  3. Réponses: 21
    Dernier message: 03/03/2010, 19h09
  4. Importation des mails avec Kmail et Thunderbird ?
    Par axel-erator dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 30/11/2004, 00h36
  5. importer des donnees dans interbase
    Par ms91fr dans le forum InterBase
    Réponses: 3
    Dernier message: 25/11/2002, 17h43

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