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 :

Comment copier le contenu d'une table vers une autre ?


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 210
    Points : 91
    Points
    91
    Par défaut Comment copier le contenu d'une table vers une autre ?
    Bonjour à tous,

    Je dois copier les données d'une table, vers une autre table. J'ai lu le Faq http://mysql.developpez.com/faq/?pag...ION_copie_base mais mon soucis est que les 2 tables se trouvent sur 2 serveurs différents et que j'exécute tout cela à partir d'un troisième poste.

    Que dois je changer dans le code suivant pour que cela fonctionne?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table_destination SELECT ... FROM table_source
    Voici les données
    Table à copier:
    ip: 66.0.0.1
    utisateur: moi1
    mot de passe: toi1
    base de donnée : bd1
    table : table1
    Table de destination
    ip: 67.0.0.2
    utisateur: moi2
    mot de passe: toi2
    base de donnée : bd2
    table : table2

    Merci de votre aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 69
    Points : 44
    Points
    44
    Par défaut
    Je ne suis pas spécialiste , mais l'autre jour, j'ai copié le contenu d'une table dans une autre mais ce contenu était tronqué (il manquait du texte dans le contenu copié dans la table de destination), je ne sais pas si la plateforme est importante dans l'histoire.. si tu exportes via un fichier texte et que tu l'importes ensuite ailleurs, mais bon...si cela peut t'aider http://www.developpez.net/forums/d76...e/#post4410455. bon courage

  3. #3
    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
    Le mieux est d'exporter les données sous forme de requêtes SQL INSERT puis de les réinjecter dans l'autre base.

    Il y a aussi la solution en utilisant SELECT INTO OUTFILE puis LOAD DATA INFILE sur l'autre serveur. C'est plus rapide si tu as beaucoup de lignes à transférer.
    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 !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 210
    Points : 91
    Points
    91
    Par défaut
    ... je ne peux utiliser LOAD DATA INFILE car ... je ne peux déposer de fichier sur le serveur MYSQL.

    J'ai tout de même fait mes petites recherche. Sur le site de MYSQL on parle comment accélérer la commande INSERT . http://dev.mysql.com/doc/refman/5.0/...ert-speed.html

    On y parle de "utilisez les valeurs multiples de la commande INSERT."
    Malheureusement je ne vois trop comment faire.
    Voici une partie des 214000 lignes que je dois envoyer vers le serveur MYSQL. Comment faire pour utiliser ces fameuses commandes multiple?

    Merci

    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
    INSERT INTO `engine` VALUES (7370, 157, 1);
    INSERT INTO `engine` VALUES (7370, 158, 1);
    INSERT INTO `engine` VALUES (7370, 159, 1);
    INSERT INTO `engine` VALUES (7370, 160, 1);
    INSERT INTO `engine` VALUES (7370, 161, 1);
    INSERT INTO `engine` VALUES (7370, 162, 1);
    INSERT INTO `engine` VALUES (7370, 163, 1);
    INSERT INTO `engine` VALUES (7370, 133, 1);
    INSERT INTO `engine` VALUES (7371, 1, 1);
    INSERT INTO `engine` VALUES (7371, 69, 1);
    INSERT INTO `engine` VALUES (7371, 70, 1);
    INSERT INTO `engine` VALUES (7371, 71, 1);
    INSERT INTO `engine` VALUES (7371, 72, 1);
    INSERT INTO `engine` VALUES (7371, 73, 2);
    INSERT INTO `engine` VALUES (7371, 74, 1);
    INSERT INTO `engine` VALUES (7371, 75, 1);
    INSERT INTO `engine` VALUES (7371, 76, 1);
    INSERT INTO `engine` VALUES (7371, 77, 1);
    INSERT INTO `engine` VALUES (7371, 78, 1);
    INSERT INTO `engine` VALUES (7371, 79, 1);
    INSERT INTO `engine` VALUES (7371, 122, 4);
    INSERT INTO `engine` VALUES (7371, 123, 3);
    INSERT INTO `engine` VALUES (7371, 124, 3);
    INSERT INTO `engine` VALUES (7371, 125, 2);
    INSERT INTO `engine` VALUES (7371, 82, 1);
    INSERT INTO `engine` VALUES (7371, 83, 1);
    INSERT INTO `engine` VALUES (7371, 84, 1);
    INSERT INTO `engine` VALUES (7371, 134, 1);
    INSERT INTO `engine` VALUES (7371, 135, 1);
    INSERT INTO `engine` VALUES (7371, 136, 1);
    INSERT INTO `engine` VALUES (7371, 139, 1);
    INSERT INTO `engine` VALUES (7371, 140, 1);
    INSERT INTO `engine` VALUES (7371, 141, 1);
    INSERT INTO `engine` VALUES (7371, 142, 1);
    INSERT INTO `engine` VALUES (7371, 143, 1);
    INSERT INTO `engine` VALUES (7371, 126, 4);
    INSERT INTO `engine` VALUES (7371, 127, 4);
    INSERT INTO `engine` VALUES (7371, 144, 1);
    INSERT INTO `engine` VALUES (7371, 128, 1);
    INSERT INTO `engine` VALUES (7371, 129, 2);
    INSERT INTO `engine` VALUES (7371, 119, 5);
    INSERT INTO `engine` VALUES (7371, 120, 5);
    INSERT INTO `engine` VALUES (7371, 130, 3);
    INSERT INTO `engine` VALUES (7371, 131, 1);
    INSERT INTO `engine` VALUES (7371, 146, 1);
    INSERT INTO `engine` VALUES (7371, 147, 1);
    INSERT INTO `engine` VALUES (7371, 148, 1);

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 210
    Points : 91
    Points
    91
    Par défaut
    Je me répond à moi même (et oui, je m'aime bien).

    INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

    => ma sous question : quel est la taille maximum? puis inserer mes 214000 lignes en 1 requete?

    Rien de tel que le test pour vérifier ce que je dis

  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
    Je crains que cela ne dépasse la longueur maxi d'une requête SQL.

    Comment t'adresses-tu aux deux serveurs ?
    - Commande mysql en console ?
    - phpMyAdmin ?
    - programme php ou autre ?

    C'est une opération à faire une seule fois ou à répéter périodiquement par un programme automatique ?
    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 expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Il te faudrait peut-être regarder du côté de LOAD DATA.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 210
    Points : 91
    Points
    91
    Par défaut
    Effectivement, vive load data:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    load data local infile 'phpdig.csv' into table phpdig_engine FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES TERMINATED BY '\r\n'
    J'exporte crée le fichier phpdig.csv via Phpmyadmin.

    Suite du programme : créer un shell qui fait tt cela en un clique

    merci

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

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. [VB.Net] Comment copier une DataRow d'une table vers une autre ?
    Par YLF dans le forum Accès aux données
    Réponses: 7
    Dernier message: 05/09/2012, 23h23
  3. Réponses: 1
    Dernier message: 19/10/2011, 12h13
  4. Comment copier une table d'une BD vers une autre BD?
    Par js8bleu dans le forum Langage SQL
    Réponses: 6
    Dernier message: 27/10/2009, 09h13
  5. Copier les enregistrements d'une table vers une table d'une autre DB
    Par karinette21 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/11/2008, 21h50

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