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 :

Transfert de données entre deux tables différentes


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Points : 16
    Points
    16
    Par défaut Transfert de données entre deux tables différentes
    Bonjour,

    Je suis actuellement chargé de la refonte d'un site et j'ai refait entièrement la stucture de la BDD.

    Je dois maintenant transférer les anciennes entrées vers les nouvelles tables mais celles-ci diffèrent de celles d'origine par le nom des champs.

    Je suis débutant et je ne vois pas comment faire une requête qui automatise cela. Et je n'ai aucune envie de perdre des jours à tout réentrer moi-même...

    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Avec un seul ordre SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO Nouvelle_Table (N_Col1, N_Col2, ..., N_Colm) 
    SELECT A_Col1, A_Col2, ..., A_Colm
    FROM Ancienne_Table
    Il faut bien évidement que le nombre et le type des colonnes correspondent, mais pour les noms ce n'est pas nécessaire, ce sera l'ordre des colonnes défini dans l'insert et le select qui sera déterminant.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    Ok

    donc si j'ai une table produit(new) NOM STOCK PRIX
    et une autre produit(old) STOCK PRIX COULEUR NOM

    je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO produit(new) (1, 2, 3) 
    SELECT 4, 1, 2
    FROM produit(old)
    c'est juste ?

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Non c'est faux car tu n'as pas de colonnes nommées avec des numéros dans tes tables !
    De plus, un nom de table avec des parenthèses ne sera probablement pas accepté par le SGBDR car il va essayer d'interpréter une fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO produit_new (NOM, STOCK, PRIX)
    SELECT NOM, STOCK, PRIX
    FROM produit_old
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    les parenthèses c'est pour l'exemple juste.

    Ok donc je fais juste correspondre les noms des champs, même si ceux-ci sont différents ça marche ?

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO produit_new (NOM, STOCK, PRIX)
    SELECT libel, quantité, tarif
    FROM produit_old
    Autre question ces tables sont de 2 bases différentes est-ce qu'il ya un moyen de préciser la provenance de produit_old ?

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par settoken Voir le message
    Ok donc je fais juste correspondre les noms des champs, même si ceux-ci sont différents ça marche ?
    Du moment que libel soit bien ce que tu veux mettre dans la colonne NOM, quantité ce que tu veux mettre dans la colonne STOCK et tarif ce que tu veux mettre dans la colonne PRIX, ça marche.

    Autre question ces tables sont de 2 bases différentes est-ce qu'il ya un moyen de préciser la provenance de produit_old ?
    Il suffit de préfixer le nom de la table par le nom de la base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO base2.produit_new (NOM, STOCK, PRIX)
    SELECT libel, quantité, tarif
    FROM base1.produit_old
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    OK!
    Je te remercie pour ces précisions

    sujet résolu

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

Discussions similaires

  1. Transfert de données entre deux tables avec conditions
    Par ric009 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/03/2014, 09h47
  2. [AC-2010] Transfert de données entre deux tables avec recopie
    Par Mehdouche dans le forum VBA Access
    Réponses: 7
    Dernier message: 15/07/2013, 05h38
  3. exporter les données entre deux tables différentes ?
    Par tizilfin dans le forum Oracle
    Réponses: 3
    Dernier message: 12/03/2007, 15h39
  4. transfert de données entre deux tables
    Par student007 dans le forum Access
    Réponses: 4
    Dernier message: 23/12/2005, 13h04
  5. [ADO.Net][VB.NET] Comment copier des données entre deux BDD différentes ?
    Par maddog2032 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 06/06/2005, 11h01

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