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 :

Mettre à jour une colonne via CSV ?


Sujet :

MySQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 163
    Par défaut Mettre à jour une colonne via CSV ?
    Bonjour,

    J'ai une base de données avec quatre colonnes : id, nom, prenom, email (il y en a plus en fait mais ce sont celles qui m'intéressent ici).
    Actuellement, la colonne email est vide pour la plupart des personnes mais on m'a fourni un fichier CSV avec les noms, prénoms et les adresses email.

    Comment faire pour ajouter à la table existante les adresses email des personnes lorsque les noms & prénoms dans la table correspondent à ceux indiqués dans le fichier CSV qu'on me fournit (et lorsqu'il n'y a pas d'adresse email déjà indiquée) ?

    Est-ce qu'il y a un moyen simple, peut-être avec PHPMyAdmin ?

    Merci pour vos conseils...

    T.

  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 868
    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 868
    Par défaut
    Salut trucmuche2005.

    Citation Envoyé par trucmuche2005
    Comment faire pour ajouter à la table existante les adresses email des personnes
    En deux étapes !

    Dans le premier, vous faites le chargement de votre fichier excel dans une table de travail.
    Dans le second, vous faites avec un update la mise à jour de votre colonne, à partir de cette table de travail.

    Citation Envoyé par trucmuche2005
    Est-ce qu'il y a un moyen simple, peut-être avec PHPMyAdmin ?
    Tout dépend de ce que vous entendez pas "moyen simple".
    Une saisie manuelle, je suppose, n'est pas le moyen simple auquel vous pensez.

    Une qualité que doit avoir tout bon informaticien est d'être fainéant. Pourquoi ?
    Car il vaut mieux se casser la tête pour trouver une solution qui va faire le travail à votre place, plutôt que de perdre du temps bêtement dans un travail répétitif et long, que vous serez obliger de faire.

    Pour la première étape :
    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...
    C'est juste un exemple !

    Voici le contenu du fichier Excel :
    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"
    Pour la seconde étape :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    update      `table_email`    as t1
    inner join  `table_travail`  as t2
            on  t2.nom = t1.nom
           and  t2.prenom = t1.prenom
     
           set  t1.email = t1.email
         where  t1.email is null;
    @+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 163
    Par défaut
    Bonjour !
    Merci... Comment n'ai-je pas pensé à passer par une table intermédiaire ?? Mille mercis pour votre aide ! :-)
    T.

Discussions similaires

  1. Mettre à jours une colonne CLOB dans une tabel
    Par proDZ dans le forum Oracle
    Réponses: 4
    Dernier message: 20/08/2009, 11h53
  2. impossible de mettre à jour une colonne.
    Par yass dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 18/06/2009, 09h58
  3. Mettre à jour une base via un tableau HTM
    Par basketime dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 12/03/2007, 15h18
  4. Mettre à jour une BD via script
    Par steelidol dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/01/2007, 17h21
  5. Prb mettre à jour une table via un fichier excel
    Par antier dans le forum Access
    Réponses: 3
    Dernier message: 02/12/2005, 10h31

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