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 :

Comment importer un fichier Excel sur unt table MySQL ayant des clés étrangères?


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Par défaut Comment importer un fichier Excel sur unt table MySQL ayant des clés étrangères?
    Bonjour,
    Je souhaiterais transférer mes données contenues dans un fichier Excel vers ma BDD MySQL.
    Voici le contenu de ma table :


    Table structure

    id --------------------- PK
    nom_contact--------------
    nom_structure------------
    id_typologie ----------- FK
    id_pays --------------- FK

    Mon fichier Excel contient les informations suivantes :
    le nom du contact, le nom de la structure, la typologie et le pays.

    Le problème ce sont les clés étrangères (FK), dans ma table j'ai des ID faisant référence aux données d'une autre table, alors que dans mon fichier, j'ai toutes les données brutes.
    Comment puis-je importer mon fichier Excel sachant que j'ai des clés étrangères que je devrais mentionner avant ? Comment faire dans ce cas, est-ce possible ?

    Merci

  2. #2
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 205
    Billets dans le blog
    16
    Par défaut
    Bonjour geeka,


    Citation Envoyé par geeka
    dans mon fichier, j'ai toutes les données brutes.
    Logiquement, les clés étrangères font référence à des clés primaires déjà existantes de la table de référence.

    Qu’en est-il ?
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  3. #3
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 205
    Billets dans le blog
    16
    Par défaut
    Les colonnes id_typologie id_pays référencées appartiennent-elles à la même table « parente » ?
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  4. #4
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 205
    Billets dans le blog
    16
    Par défaut
    En attente de plus d’informations de votre part, je me limite pour le moment au scénario suivant :

    La base de données contient une table PAYS, dont la structure est issue du script suivant :


    
    CREATE TABLE PAYS
    (
            Id_Pays          INTEGER          NOT NULL
          , Nom_Pays         VARCHAR(16)      NOT NULL      	
        , CONSTRAINT PAYS_PK PRIMARY KEY (Id_Pays)
    ) ;
    
    INSERT INTO PAYS (Id_Pays, Nom_Pays)  VALUES (1, 'France'), (2, 'Belgique'), (3, 'Canada') ;
    
    

    Le fichier Excel a été converti au format CSV (les valeurs de la colonne id_pays sont des valeurs existant dans la table PAYS) :

    
    id    nom_contact    nom_structure    id_typologie    id_pays
    1     Fernand        Ets Naudin       3               2
    2     Raoul          La péniche       1               1
    3     Paul           La péniche       1               1     
    
    

    Une structure pour héberger ce fichier dans la base de données :

    
    CREATE TABLE imageExcel
    (
            id               INTEGER          NOT NULL
          , nom_contact      VARCHAR(16)      NOT NULL 
          , nom_structure    VARCHAR(16)      NOT NULL       
          , id_typologie     INTEGER          NOT NULL 
          , id_pays          INTEGER          NOT NULL
        , CONSTRAINT imageExcel_PK PRIMARY KEY (id)
         , CONSTRAINT imageExcel_Pays_FK FOREIGN KEY (id_pays) 
               REFERENCES PAYS (id_pays)
     ) ;
    
    

    Importation du fichier CSV (nommé ici « geeka.csv ») :

    
    LOAD DATA INFILE 'C:\Developpez/$MySQL/geeka.csv' INTO TABLE imageExcel
    FIELDS TERMINATED BY ';'
    LINES TERMINATED BY '\r\n' 
    IGNORE 1 ROWS ;
    
    

    Pour voir :

    
    SELECT * FROM imageExcel ;
    
    
    =>

    
    id    nom_contact    nom_structure    id_typologie    id_pays
    1     Fernand        Ets Naudin       3               2
    2     Raoul          La péniche       1               1
    3     Paul           La péniche       1               1     
    
    
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  5. #5
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Par défaut
    Merci pour votre réponse.
    Oui les clés étrangères font référence à des clés primaires d'autres tables.
    L'id_typologie fait référence à la table typologie
    Table typologie
    id_typologie------PK
    typologie---------

    Et l'id_pays fait référence à une autre table, la table pays
    Table pays
    id_pays-----PK
    code_pays------
    pays------------

  6. #6
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Par défaut
    Merci pour votre exemple bien expliqué.
    Je dois juste préciser que dans mon fichier Excel, je n'ai pas d'id_typologie et d'id_pays mais plutôt nom_typologie et nom_pays.

  7. #7
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 205
    Billets dans le blog
    16
    Par défaut
    Addendum : je n'ai pas vu votre dernier message, donc j'ai conservé les » id ».


    Le scénario CSV devient le suivant (présence de la table TYPOLOGIE et ajout dans la table imageExcel de la clé étrangère qui va bien) :

    
    CREATE TABLE PAYS
    (
            Id_Pays          INTEGER          NOT NULL
          , Nom_Pays         VARCHAR(16)      NOT NULL      	
        , CONSTRAINT PAYS_PK PRIMARY KEY (Id_Pays)
    ) ;
    
    INSERT INTO PAYS (Id_Pays, Nom_Pays)  VALUES (1, 'France'), (2, 'Belgique'), (3, 'Canada') ;
    
    CREATE TABLE TYPOLOGIE
    (
            Id_Typo          INTEGER          NOT NULL
          , Nom_Typo         VARCHAR(16)      NOT NULL      	
        , CONSTRAINT PAYS_PK PRIMARY KEY (Id_Typo)
    ) ;
    
    INSERT INTO TYPOLOGIE (Id_Typo, Nom_Typo)  VALUES (1, 'Typo A'), (2, 'Typo B'), (3, 'Typo C') ;
    
    CREATE TABLE imageExcel
    (
            id               INTEGER          NOT NULL
          , nom_contact      VARCHAR(16)      NOT NULL 
          , nom_structure    VARCHAR(16)      NOT NULL       
          , id_typologie     INTEGER          NOT NULL 
          , id_pays          INTEGER          NOT NULL
        , CONSTRAINT imageExcel_PK PRIMARY KEY (id)
         , CONSTRAINT imageExcel_Pays_FK FOREIGN KEY (id_pays) 
               REFERENCES PAYS (id_pays)
          , CONSTRAINT imageExcel_Typologie_FK FOREIGN KEY (id_typologie) 
               REFERENCES TYPOLOGIE (Id_Typo)
    ) ;
    
    LOAD DATA INFILE 'D:\Developpez/$MySQL/geeka.csv' INTO TABLE imageExcel
    FIELDS TERMINATED BY ';'
    LINES TERMINATED BY '\r\n' 
    IGNORE 1 ROWS ;
    
    SELECT * FROM imageExcel ;
    
    
    =>


    
    id    nom_contact    nom_structure    id_typologie    id_pays
    1     Fernand        Ets Naudin       3               2
    2     Raoul          La péniche       1               1
    3     Paul           La péniche       1               1     
    
    
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  8. #8
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 205
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par geeka
    Je dois juste préciser que dans mon fichier Excel, je n'ai pas d'id_typologie et d'id_pays mais plutôt nom_typologie et nom_pays.
    Précision non négligeable ! On va s’occuper de ça, à coups de jointures avec les colonnes nom_typologie et nom_pays.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

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

Discussions similaires

  1. modéliser une table mapping ayant des clés étrangères sur des vues
    Par touftouf57 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 19/06/2010, 02h04
  2. Réponses: 5
    Dernier message: 17/01/2009, 15h04
  3. Comment importer un fichier text dans une table
    Par mongilotti dans le forum SQL
    Réponses: 6
    Dernier message: 21/05/2007, 13h05
  4. [Access 2003]Comment importer 1 fichier excel?
    Par steeves5 dans le forum Access
    Réponses: 4
    Dernier message: 10/05/2006, 14h21
  5. Peut on importer un fichier excel sur sage 500
    Par tedy75 dans le forum Excel
    Réponses: 3
    Dernier message: 11/02/2006, 19h18

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