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

MySQL Discussion :

Importer des feuilles Excel dans une table mysql


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 17
    Par défaut Importer des feuilles Excel dans une table mysql
    Bonjour,

    Je dois importer des feuilles excel dans une seul table sur mysql , j'ai utilisé quelques méthodes que j'ai trouvé sur internet mais sans succés.

    c'est quelqu'un à déja eu ce genre de probléme qu'il me guide et merci à l'avance

  2. #2
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 883
    Par défaut
    Salut elans.

    Il n'y a aucune difficulté à charger un fichier Excel dans une ou plusieurs tables MySql.
    Vous devez vous poser les questions suivantes :

    1) êtes-vous sous windows ou sous linux ?
    C'est à cause de la gestion de la fin de ligne qui est différente entre ces deux OS.

    2) quel est la structure de vos lignes sous Excel ?
    Est-ce que vos champs sont séparés par des tabulations, des virgules, des points virgules ...
    Comment gérez vous le NULL ?

    3) le charset ?

    4) que désirez-vous faire ensuite ?
    Dispatcher vos champs dans plusieurs colonnes de plusieurs tables ?

    Si vous désirez que je vous donne un exemple, donnez moi un exemple de ce que vous désirez charger depuis un fichier text de type Excel (.csv).
    Et donnez moi aussi la structure de vos tables, toujours avec l'exemple de ce que vous désirez obtenir.

    5) désirez-vous sauter quelques lignes dans votre fichier Excel ?

    @+

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 17
    Par défaut
    bonjour Artemus24;

    Merci pour la réponse alors :

    - je travail sur windows

    - c'est un fichier (csv) qui contient 15 feuilles , chaque feuille compte environ 30000 lignes et ils ont tous la même structure ça veut dire 4 colonnes dans chaque feuille avec les mêmes intitulés ensuite j'ai une table sur MYSQL cette table a la même structure que les feuilles 4 colonnes (ID_CLEINT,NOM,PRENOM,AGE) dans le fichier je veux pas sauter des lignes et aussi il y a pas de ligne vide dans les feuilles

    Mon objectif et d'importer toutes les feuilles dans ma table MYSQl j'ai déja utiliser une requête SQl LOAD DATA INFILE.... mais il fait juste l'importation d'une seule feuille

    A+

  4. #4
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 883
    Par défaut
    Salut elans.

    Voici un exemple de chargement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS trav
    --------------
     
    --------------
    CREATE TABLE trav (
      col_num   integer      null default null,
      col_date  datetime     null default null,
      col_char  varchar(255) null default null
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    LOAD DATA LOCAL INFILE 'fichier.txt'
         INTO TABLE `trav`
         CHARACTER SET latin1
         FIELDS TERMINATED            BY ';'
                OPTIONALLY ENCLOSED   BY '\"'
                ESCAPED               BY '\\'
         LINES  TERMINATED            BY '\r\n'
         IGNORE 0 LINES
         (@F1, @F2, @F3)
         set col_num  =             trim(@F1),
             col_date = str_to_date(trim(@F2), '%d/%c/%Y %H:%i:%s'),
             col_char =             trim(@F3)
    --------------
     
    --------------
    select * from trav
    --------------
     
    +---------+---------------------+--------------------+
    | col_num | col_date            | col_char           |
    +---------+---------------------+--------------------+
    |    NULL | 2014-05-10 15:33:17 | web                |
    |     125 | 2014-05-15 23:53:59 | alpha; beta; gamma |
    |    -247 | NULL                | zéro               |
    +---------+---------------------+--------------------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    Appuyez sur une touche pour continuer...
    Et voici le fichier text de type ".csv" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    \N;"10/5/2014 15:33:17";"web"
    125;"15/5/2014 23:53:59";"alpha\; beta\; gamma"
    -247;\N;"zéro"
    Ce script mysql charge un fichier text de type ".csv".
    Il est donc nécessaire de transformer votre fichier Excel au format csv.

    Si par contre, vous désirez extraire directement le contenu du fichier Excel, il vous faut un utilitaire comme "odbc connector".
    C'est-à-dire que vous accédez à MySql depuis Excel.

    La solution que je vous propose ci-dessus est l'inverse, c'est-à-dire accéder à partir d'un fichier ".csv" mais depuis MySql.

    @+

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 17
    Par défaut
    Salut Artemus24,

    Merci pour la réponse je vais tester votre code par contre j'ai des questions :

    - Pour le code SQl je dois l’exécuter dans MYSQL plus précisément dans la fenêtre SQL de ma Base

    - Est c qu'il faut faire des modification sur le connecteur ODBC avant d'exécuter le script ?

    +---------+---------------------+--------------------+
    | col_num | col_date            | col_char           |
    +---------+---------------------+--------------------+
    |    NULL | 2014-05-10 15:33:17 | web                |
    |     125 | 2014-05-15 23:53:59 | alpha; beta; gamma |
    |    -247 | NULL                | zéro               |
    +---------+---------------------+--------------------+
    - ce tableau est obligatoire

    - le 2eme code j l'ai pas trop compris et aussi cette partie dans le premier code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
           (@F1, @F2, @F3)
             set col_num  =             trim(@F1),
             col_date = str_to_date(trim(@F2), '%d/%c/%Y %H:%i:%s'),
             col_char =             trim(@F3)


    A+

  6. #6
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 883
    Par défaut
    Salut elans.

    Citation Envoyé par Elans
    Pour le code SQl je dois l’exécuter dans MYSQL plus précisément dans la fenêtre SQL de ma Base ?
    En ce qui concerne mon exemple, je l'exécute avec un script SQL que je lance depuis un script batch windows.
    Voici le source du script batch windows :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    @echo off
     
    setlocal enableDelayedExpansion
     
    chcp 1252 > nul
     
    set PATH=.;%WAMPSERVER%\bin\mysql\%MYSQL%\bin\;%PATH%
     
    SET FIC=%~nx0
    SET FIC=%FIC:bat=sql%
     
    @echo.
    mysql < %FIC%  --verbose  --force
    @echo.
    pause
    exit
    Et voici le source du script mysql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    SET AUTOCOMMIT = 0;
    START TRANSACTION;
     
    -- ======================
    -- Base de Données `Base`
    -- ======================
     
    DROP DATABASE IF EXISTS `base`;
     
    CREATE DATABASE IF NOT EXISTS `base`
    	DEFAULT CHARACTER SET `latin1`
    	DEFAULT COLLATE       `latin1_general_ci`;
     
    USE `base`;
     
    -- ============
    -- Table `trav`
    -- ============
     
    DROP TABLE IF EXISTS trav;
     
    CREATE TABLE trav (
      col_num   integer      null default null,
      col_date  datetime     null default null,
      col_char  varchar(255) null default null
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED;
     
    -- =============================
    -- Chargement de la table `trav`
    -- =============================
     
    LOAD DATA LOCAL INFILE 'fichier.txt'
         INTO TABLE `trav`
         CHARACTER SET latin1
         FIELDS TERMINATED            BY ';'
                OPTIONALLY ENCLOSED   BY '\"'
                ESCAPED               BY '\\'
         LINES  TERMINATED            BY '\r\n'
         IGNORE 0 LINES
         (@F1, @F2, @F3)
         set col_num  =             trim(@F1),
             col_date = str_to_date(trim(@F2), '%d/%c/%Y %H:%i:%s'),
             col_char =             trim(@F3);
     
    -- =========================
    -- Vidage de la table `trav`
    -- =========================
     
    select * from trav;
     
    -- ===
    -- Fin
    -- ===
     
    COMMIT;
    SET AUTOCOMMIT = 0;
    Vu que ce script est à la demande, rien ne vous empêche de faire comme moi, c'est-à-dire un script que vous lancez quand bon vous semble.
    Sinon, vous pouvez le lancer depuis phpmyadmin.

    Citation Envoyé par Elans
    Est-ce qu'il faut faire des modification sur le connecteur ODBC avant d'exécuter le script ?
    Je ne comprends pas bien votre question. L'exemple que je vous ai donné se lance sous MySql.
    Il n'est pas nécessaire d'avoir "connector odbc" qui est une autre application destiné à travailler depuis Excel.

    Citation Envoyé par Elans
    ce tableau est obligatoire
    Ce n'est pas un tableau mais un exemple de chargement du fichier excel vers une table mysql.

    Citation Envoyé par Elans
    le 2eme code je ne l'ai pas trop compris et aussi cette partie dans le premier code
    Qu'est-ce que vous appelez "2eme code" ?
    Si c'est le fichier Excel, c'est juste un exemple de chargement d'une colonne numérique, alphabétique et la valeur NULL.

    La partie suivante concerne l'association que vous allez faire entre les colonnes du fichier Excel et celle de votre table MySql.
    Je définis trois colonnes que je baptise "@F1, @F2, @F3".
    Elles correspondent à la première, deuxième et troisième colonne de votre fichier Excel.

    Ensuite, je dois effectuer une mise en forme sur ces trois colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set col_num  = trim(@F1),
    Il s'agit ici de supprimer les espaces avant et après la première colonne, c'est-à-dire la colonne numérique.

    Il s'agit de mettre en forme la date qui a un format qui ne correspond pas à ce que je dois charger dans la colonne "date".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    col_date = str_to_date(trim(@F2), '%d/%c/%Y %H:%i:%s'),
    Et enfin, sur la troisième colonne, je supprime aussi les espaces avant et après la chaine de caractères.
    Refaites le test chez vous en prenant les deux scripts windows et mysql, ainsi que le fichier Excel.
    N'oubliez pas de modifier le chemin vers votre serveur dans la variable PATH.

    @+

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 17
    Par défaut
    Salut,

    Je vais le voir ce week-end à tête reposer et je vous tiens au courant et merci pour votre aide

    A+

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

Discussions similaires

  1. importer des donnees excel dans une BDD mysql
    Par aya2103 dans le forum Autres SGBD
    Réponses: 0
    Dernier message: 24/08/2010, 11h30
  2. Insérer des données Excel dans une table MySQL existante
    Par Pieck dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 23/10/2009, 13h28
  3. Importer des données Excel dans une table Access
    Par Flaguette dans le forum Modélisation
    Réponses: 3
    Dernier message: 25/09/2008, 21h50
  4. Réponses: 5
    Dernier message: 20/06/2007, 14h11
  5. [9i] Importer des données Excel dans une table
    Par oasma dans le forum SQL
    Réponses: 6
    Dernier message: 19/03/2007, 07h39

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