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 :

Alimenter une table à partir d'une liste venant de EXCEL


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut Alimenter une table à partir d'une liste venant de EXCEL
    Bonjour,

    j'ai une table dont la structure est très simple :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE `applications` (
      `application_ident` smallint NOT NULL AUTO_INCREMENT,
      `application_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
      PRIMARY KEY (`application_ident`),
      UNIQUE KEY `UK_appli_name` (`application_name`)*
    ) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
    J'ai par ailleurs une feuille EXCEL contenant une colonne avec 129 lignes et je voudrais mettre ces 129 données dans ma table. Peut-on automatiser cela ?

  2. #2
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Etant donné l'abondance des réponses, j'ai fini par coder moi-même une fonction en PHP...

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 682
    Billets dans le blog
    10
    Par défaut
    Bonjour Laurent

    La méthode classique pour alimenter une table à partir d'un fichier est d'utiliser LOAD DATA (local) INFILE

    Par contre, si la table cible comporte 129 colonnes, c'est très probablement qu'elle est mal modélisée : attention aux redondances, à l'intégrité des données et aux performances

  4. #4
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    129, c'est le nombre de lignes, car des colonnes, y en a 168

    Mon outil récupère ces données (issues d'une bdd mal conçue (c'est pas moi qui le dit )).

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 682
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    129, c'est le nombre de lignes, car des colonnes, y en a 168
    Me voilà rassuré

  6. #6
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Bonjour Laurent

    La méthode classique pour alimenter une table à partir d'un fichier est d'utiliser LOAD DATA (local) INFILE
    Ayant à refaire la même manip sur une seconde table, plutôt que modifier mon code PHP, j'ai essayé d'utiliser cette méthode "classique" :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    LOAD DATA LOCAL INFILE 'C:\projets\ticket_rawsrc\csv\testlicense\liste_applis.txt' INTO TABLE pr_product
    Error Code: 3948. Loading local data is disabled; this must be enabled on both the client and server sides
    Les explications trouvées avec Google sont en anglais et j'ai pas compris. Pouvez-vous m'aider ?

  7. #7
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    J'ai trouvé une discussion en français ici : https://qastack.fr/programming/59993...oth-the-client. J'ai trouvé le répertoire sur mon disque où se trouve mysql (C:\web\mysqlServer\bin). J'ai essayé comme indiqué mysql --local-infile=1 -u root p1 mais
    ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
    . Ayant de nouveau cherché sur Google :
    as-tu essayé mysql -h 127.0.0.1 -u root -p
    Il me demande mon mot de passe et quand je le rentre, ça mouline indéfiniment...

  8. #8
    Membre chevronné Avatar de isabelle.letrong
    Femme Profil pro
    Conseil - Consultante en systèmes d'information
    Inscrit en
    Juillet 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultante en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2010
    Messages : 109
    Par défaut
    Bonjour laurentSc

    Il faut que la variable système local_infile soit positionnée à 'ON'
    La façon la plus simple est d'utiliser mySQL Workbench et de modifier cette variable système en vous connectant en tant que root

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

Discussions similaires

  1. [AC-2010] Alimenter une liste à partir d'une autre
    Par Aziraphal dans le forum IHM
    Réponses: 3
    Dernier message: 23/11/2012, 15h46
  2. [Débutant] Alimenter une liste de String à partir d'une CheckedListBox
    Par crazyman8 dans le forum C#
    Réponses: 3
    Dernier message: 15/02/2012, 11h53
  3. Réponses: 3
    Dernier message: 25/04/2009, 20h23
  4. Réponses: 6
    Dernier message: 11/02/2009, 18h17
  5. Réponses: 22
    Dernier message: 18/06/2008, 20h01

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