Partage
  • Partager sur Facebook
  • Partager sur Twitter

Insertion de données dans une table depuis un fichier .txt

load data infile

Sujet résolu
    15 décembre 2011 à 22:05:16

    Bonsoir à toutes et à tous !

    Voilà, j'aimerai importer une quantité imposante de données dans ma table 'etablissement' de ma base 'test'
    Pour faire simple, j'utilise les requêtes suivantes :

    USE test
    LOAD DATA INFILE 'etablissement.txt' INTO TABLE etablissement;
    


    Et, malheureusement pour moi, j'obtiens une erreur :

    ERROR 1062 (23000) : Duplicate entry 'SECTION' for key 'numero_uai'
    


    J'ai donc réalisé quelques recherches sur notre google (amen :ange: ) et j'ai trouvé des solutions !
    "Bin pourquoi il vient nous courir sur le haricot oéh l'autre la !?

    Et bien certe, aucune de ces solutions ne m'a fait me sentir mieux :'(

    Je vous ai préparé une jolie petite photo histoire que vous ayez tout sous la main pour m'aider du mieux possible ;)

    Image utilisateur

    Si vous regardez cette image, vous pouvez constater que la colonne où le mot SECTION apparait appartient à la colonne 'appellation_officielle_uai' et non pas à la colonne 'numero_uai'. Je ne comprends pas cette erreur...

    EDIT : le "(1)" sur la photo est à enlever. Il servait à faire la correspondance entre l'erreur de la requête SQL avec le document texte où apparait le mot 'SECTION'...

    Merci d'avance.

    Cordialement, Xerkes.
    • Partager sur Facebook
    • Partager sur Twitter
      16 décembre 2011 à 10:35:34

      On dirait le fichier des lycées dont t'as posté le lien dans un autre topic...

      Je l'ai téléchargé, les champs sont séparés par des ";" dedans, et là t'as des tabulations.

      Donc t'as traité le fichier probablement, je me disais que tu t'étais planté mais :

      mysql> CREATE TABLE fuck(
          -> numero_uai VARCHAR(255) PRIMARY KEY,
          -> appellation_officielle_uai VARCHAR(255),
          -> denomination_principale_uai VARCHAR(255),
          -> patronyme_uai VARCHAR(255),
          -> X VARCHAR(255),
          -> Y VARCHAR(255),
          -> etat_etablissement VARCHAR(255),
          -> nature_uai VARCHAR(255),
          -> lib_nature VARCHAR(255),
          -> sous_fic  VARCHAR(255)
          -> );
      Query OK, 0 rows affected (0.17 sec)
      
      mysql> LOAD DATA INFILE 'temp/lycees.csv' INTO TABLE fuck FIELDS TERMINATED BY ';';
      ERROR 1062 (23000): Duplicate entry 'SECTION D ENSEIGNEMENT PROFESSIONNEL' for key 'PRIMARY'


      Tu rêves pas...

      Dans ton fichier il y a 2 lignes avec des retours chariot dans un des champs... bonne chasse !
      • Partager sur Facebook
      • Partager sur Twitter
        16 décembre 2011 à 11:28:20

        Salut Lord, je n'ai pas compris ta phrase :
        "Dans ton fichier il y a 2 lignes avec des retours chariot dans un des champs... bonne chasse !"

        Qu'est-ce qu'un retour chariot ?

        Et oui il s'agit bien de la liste des établissements que j'ai trouvé sur data.gouv :p

        Merci :)

        Xerkes.
        • Partager sur Facebook
        • Partager sur Twitter
          16 décembre 2011 à 11:48:25

          >>> print "\n".join(repr(line) for line in open("temp/lycees.csv") if len(line.split(";")) != 10)
          "0150037J;Lyc\xe9e d'enseignement g\xe9n\xe9ral technologique professionnel agricole-Ecole nationale des industries du lait et des viandes-Georges Pompidou;LYC GEN TECHNO PROF AGRICOLE;ENIL - GEORGES POMPIDOU;656069.9;6426637.6;1;307\r\n"
          "LYC D'ENS GENERAL TECHNO PROF AGRICOLE;3\r\n"
          "0311145B;Lyc\xe9e g\xe9n\xe9ral et technologique priv\xe9 Saint-Joseph  Lyc\xe9e des m\xe9tiers de l'\xe9lectrotechnique, de la maintenance et de la productique m\xe9canique;LYC GEN TECH PRIVE DES METIERS;SAINT-JOSEPH;576767.1;6278434.2;1;300\r\n"
          'LYCEE ENSEIGNT GENERAL ET TECHNOLOGIQUE;3\r\n'
          "0561655V;Section d'enseignement professionnel du Lycee des metiers du transport, de la logistique et de la maintenance des vehicules industriels, Broceliande;SECTION ENSEIGNT PROFESSIONNEL;LYCEE DES METIERS BROCELIANDE;316960.6;6772431.3;1;334\r\n"
          'SECTION D ENSEIGNEMENT PROFESSIONNEL;3\r\n'
          "0572591G;Section d'Enseignement Professionnelle du Lyc\xe9e des M\xe9tiers des techniciens de la motorisation, de la construction et de l'environnement G. Eiffel;SECTION ENSEIGNT PROFESSIONNEL;GUSTAVE EIFFEL;931154.7;6908746.7;1;334\r\n"
          'SECTION D ENSEIGNEMENT PROFESSIONNEL;3\r\n'
          "0800046R;Lyc\xe9e des m\xe9tiers de la maintenance des v\xe9hicules et mat\xe9riels, de la logistique et du transport, de l'\xe9lectronique et de la vente Pierre M. France;LGT LYCEE DES METIERS;PIERRE MENDES FRANCE;695720.3;6981831.9;1;300\r\n"
          'LYCEE ENSEIGNT GENERAL ET TECHNOLOGIQUE;3\r\n'
          


          En gros tu vois que certaines lignes sont coupées... un retour chariot, c'est un retour à la ligne. Si il y a un retour à la ligne dans une des valeurs, ça merdoie... c'est le fichier original qui est buggé.

          ouvre le fichier avec excel et vas à la ligne 7889...
          • Partager sur Facebook
          • Partager sur Twitter
            16 décembre 2011 à 14:02:34

            OK, je regarderais ça ce soir.

            EDIT : OMG ! j'ai galéré mais j'ai enfin réussi. Y avait une 10ene de saut de lignes à travers 65 000 lignes de données...

            <cinglé>Vive le vent, vive le vent, vive le vent d'hiver...</cinglé>

            Merci à toi pour ton aide Lord.

            Cordialement, Xerkes.


            • Partager sur Facebook
            • Partager sur Twitter

            Insertion de données dans une table depuis un fichier .txt

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown