Publicité
+ Répondre à la discussion
Page 2 sur 5 PremièrePremière 12345 DernièreDernière
Affichage des résultats 21 à 40 sur 98

Discussion: Fusion de BDD

  1. #21

    Homme Profil pro
    Inscrit en
    décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2011
    Messages : 265
    Points : -8
    Points
    -8

    Par défaut

    J'avais penser a faire ça :
    je me connecte aux 3 BDD que je sélectionne ensuite (ça doit pas être possible de sélectionner tout ne un coup) :
    Ensuite je regarde si les colonnes présents dans les clés primaires sont identiques sinon j'insére :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    connect(192.X.X.1,util,1233);
    connect(192.X.X.2,util,1233);
    connect(192.X.X.3,util,1233);
     
    USE BD3;
    USE BD2;
    USE BD1;
     
    INSERT INTO BDD3.calibration;
    SELECT *;
    FROM BDD2.calibration;
    WHERE NOT EXISTS
    (
    	SELECT 1;
    	FROM BDD3.calibration;
    	WHERE BDD3.slot = BDD2.slot;
    		AND BDD3.channel = BDD2.channel;
    			AND BDD3.frequency = BDD2.frequency;
    				AND BDD3.date = BDD2.date;
    		-- etc.
    )
    Et pour la date ça me l'affiche en bleue (mots clés MySQL alors que c'est le nom de la variable chez moi)

  2. #22
    Modérateur
    Avatar de CinePhil
    Homme Profil pro Philippe Leménager
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    13 773
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Leménager
    Âge : 51
    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 : 13 773
    Points : 22 995
    Points
    22 995

    Par défaut

    'date' est un mauvais nom de colonne car c'est un mot réservé du langage SQL.

    Encore une erreur du concepteur de la BDD !
    Entoure ce nom de colonne avec des apostrophes inversées ` pour que MySQL interprète bien ça comme une colonne et non pas comme le mot clé.

    Tu avais écrit dans ton premier message :
    J'ai penser à décomposer la tâche de la manière suivante :
    - Réaliser un BACK UP avant toute opération (j'ai un script en BAT pour ça ...) ;
    J'ose espérer qu'il s'agit d'un mysqldump et non pas d'une simple copie du répertoire de la BDD ou, dans ce dernier cas, qu'il n'y a que des tables utilisant le moteur MyISAM dans la BDD !

    Mon idée est plutôt que tu importes les BDD 1 et 2 dans le nouveau serveur à partir du fichier de dump. Ensuite avec les 3 BDD sur le nouveau serveur, tu peux exécuter le script SQL pour n'importer dans BDD3 que les lignes nécessaires à partir de BDD1 et BDD2.

    Si c'est une opération à répéter régulièrement, inclus au script SQL le vidage de BDD1 et BDD2 sur le nouveau serveur.

    En tout cas, ton petit script est bourré d'erreurs !
    Code :
    1
    2
    3
    connect(192.X.X.1,util,1233);
    connect(192.X.X.2,util,1233);
    connect(192.X.X.3,util,1233);
    3 connexions successives : à mon avis seule la dernière sera active et utilisée par le script !

    Code :
    1
    2
    3
    USE BD3;
    USE BD2;
    USE BD1;
    3 USE successifs : seule la dernière BDD sélectionnée sera active !

    Et comme ensuite la requête précise le nom de la BDD d'où provient chaque table utilisée, le USE est inutile.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    INSERT INTO BDD3.calibration;
    SELECT *;
    FROM BDD2.calibration;
    WHERE NOT EXISTS
    (
    	SELECT 1;
    	FROM BDD3.calibration;
    	WHERE BDD3.slot = BDD2.slot;
    		AND BDD3.channel = BDD2.channel;
    			AND BDD3.frequency = BDD2.frequency;
    				AND BDD3.date = BDD2.date;
    		-- etc.
    )
    Le point virgule termine la requête ! Comme tu en as mis un à chaque ligne...
    Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
    « 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 !

  3. #23

    Homme Profil pro
    Inscrit en
    décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2011
    Messages : 265
    Points : -8
    Points
    -8

    Par défaut

    Oui c'est bien un DUMP ... Je m'étais dis ca ca serait plus simple de me connecter directement aux 3 serveurs SQL et de n'importer que les lignes qui n'existent pas à l'image du post précédent, c'est possible et correct ?

  4. #24
    Modérateur
    Avatar de CinePhil
    Homme Profil pro Philippe Leménager
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    13 773
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Leménager
    Âge : 51
    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 : 13 773
    Points : 22 995
    Points
    22 995

    Par défaut

    Non parce que la requête peut être multi-BDD mais pas multi-serveurs. Toutes les BDD utilisées par une requête doivent être sur le même serveur.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
    « 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. #25

    Homme Profil pro
    Inscrit en
    décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2011
    Messages : 265
    Points : -8
    Points
    -8

    Par défaut

    Donc je devrais importer les BDD 1 et 2 à chaque MAJ. Le nom de mes BACK UP est de la forme BDD1_Date.sql, il faudrait prendre en compte le fait que ce soit un nom dynamique dans le script ?

  6. #26
    Modérateur
    Avatar de CinePhil
    Homme Profil pro Philippe Leménager
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    13 773
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Leménager
    Âge : 51
    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 : 13 773
    Points : 22 995
    Points
    22 995

    Par défaut

    Code :
    mysql -u user_mysql -pson_mot_de_passe BDD1 < chemin/vers/BDD1_Date.sql
    Ceci va exécuter le script BDD1_Date.sql sur la BDD1 du serveur (en l'occurrence le nouveau serveur puisqu'il s'agit d'y importer le dump de BDD1 du serveur 1).

    Le script SQL qui va ensuite ajouter les nouvelles lignes dans la BDD3 ne change pas puisque le nom de la BDD1 importée reste le même.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
    « 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. #27

    Homme Profil pro
    Inscrit en
    décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2011
    Messages : 265
    Points : -8
    Points
    -8

    Par défaut

    Ah oui le nom de la BDD reste le même parcontre le nom du fichier back up est datée ?! Ou sinon ca serait bien de prendre le fichier le plus récent à chaque importation, une idée ? Parce que là j'envoie tous les back up dans un dossier . Ou bien sinon je rajouterai un script back up ou le nom sera BDD 1 et BDD 2 pour éviter ce problème

  8. #28

    Homme Profil pro
    Inscrit en
    décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2011
    Messages : 265
    Points : -8
    Points
    -8

    Par défaut

    Parcontre l'idéal serait que l'on soit assuré que le back up est bien réalisé pour les deux BDD avant de les importés dans le 3ème serveur SQL, il est possible d'executer tout ca sur le même script (connexion BDD et backup, si tout OK je passe au 2ème back up si tout OK je passe au script SQL), mes back up sont en bat.

  9. #29
    Modérateur
    Avatar de CinePhil
    Homme Profil pro Philippe Leménager
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    13 773
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Leménager
    Âge : 51
    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 : 13 773
    Points : 22 995
    Points
    22 995

    Par défaut

    Ne confonds pas script de backup (de dump en fait) qui va lancer tes dump et qui utilise la commande mysqldump qui s'exécute en ligne de commande, et le résultat de ces dump qui sont des fichiers SQL qui sont à fournir en paramètre à la commande mysql pour injecter les données sauvegardées dans les BDD 1 et 2 du nouveau serveur.

    Typiquement, tu peux avoir un programme qui :
    1) vérifie que les dumps n'ont pas encore été faits ;
    2) fait les dumps des BDD 1 et 2 sur leurs serveurs respectifs ;
    3) transfère les fichiers de dump sur le serveur 3 ;
    4) injecte les fichiers de dump dans MySQL du serveur 3 ;
    5) lance le script SQL d'ajout des lignes dans la BDD3, lequel prévoit à la fin le vidage de BDD1 et 2 du serveur 3 ;
    6) éventuellement, supprime les fichiers de dump du serveur 3, si vous ne souhaitez pas les conserver.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
    « 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 !

  10. #30

    Homme Profil pro
    Inscrit en
    décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2011
    Messages : 265
    Points : -8
    Points
    -8

    Par défaut

    Merci beaucoup, ca commence à rentrer !
    1/ Exécution des back up des BDD1 et BDD2 vers un dossier du PC du serveur 3 (fichiers sql non datés pour simplifier la donne ...)
    2/ Si back up réalisé alors on importe les BDD1 et BDD2 dans le serveur MySQL 3;
    3/ Si back up exécuté alors on exécute la suite de commande SQL.
    Correct pour l'instant ?
    Je pense qu'il serait pas mal de tout taper dans un fichier php ? Vous pensez que c'est long ? (temps surtout ...)

  11. #31
    Modérateur
    Avatar de CinePhil
    Homme Profil pro Philippe Leménager
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    13 773
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Leménager
    Âge : 51
    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 : 13 773
    Points : 22 995
    Points
    22 995

    Par défaut

    Relis bien ce que j'ai écrit :
    Citation Envoyé par CinéPhil
    Typiquement, tu peux avoir un programme qui :
    ...
    4) injecte les fichiers de dump dans MySQL du serveur 3 ;
    5) lance le script SQL d'ajout des lignes dans la BDD3, lequel prévoit à la fin le vidage de BDD1 et 2 du serveur 3 ;
    Le programme en question peut être un script batch si tu es sous Winbug ou Shell si tu es sous Linux ou en PHP si tu dois l'intégrer dans une interface Web ou dans n'importe quel autre langage qui te convient mais pas en SQL.
    Il y aura en plus un script SQL, constitué donc d'une suite de requêtes SQL, pour faire l'ajout de données de l'étape 5. Ce script est créé une fois pour toute et est lancé par le programme principal.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
    « 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 !

  12. #32

    Homme Profil pro
    Inscrit en
    décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2011
    Messages : 265
    Points : -8
    Points
    -8

    Par défaut

    J'ai modifié après j'ai mis PHP ..., Ca doit pas être executé pour un serveur WEB mais ça me semble la manière la plus simple (quoique c'est déjà du boulot) parce que l'avantage c'est que je testerai l'execution des requêtes à chaque fois (2 commandes mysql dump ...) ?

  13. #33

    Homme Profil pro
    Inscrit en
    décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2011
    Messages : 265
    Points : -8
    Points
    -8

    Par défaut

    C'est bon c'est faisable, je peux commencer ?

  14. #34

    Homme Profil pro
    Inscrit en
    décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2011
    Messages : 265
    Points : -8
    Points
    -8

    Par défaut

    J'ai terminé le script batch (j'importe bien les BDD ...) maintenant je voudrai appeler le script sql, comment faire ? (le script SQL devra contenir les requêtes d'insertion dans la BDD finale ...)
    Merci;

  15. #35
    Modérateur
    Avatar de CinePhil
    Homme Profil pro Philippe Leménager
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    13 773
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Leménager
    Âge : 51
    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 : 13 773
    Points : 22 995
    Points
    22 995

    Par défaut

    Eh bien dans ton fichier batch, tu ajoutes la commande donnée plus haut :
    Code :
    mysql -u user_mysql -pson_mot_de_passe nom_bdd_a_modifier < chemin/vers/fichier.sql
    Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
    « 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 !

  16. #36

    Homme Profil pro
    Inscrit en
    décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2011
    Messages : 265
    Points : -8
    Points
    -8

    Par défaut

    Ok donc dans mon script je mets pas un 'USE BDD à modifier' parcontre j'aurai besoin de manipuler 2 BDD en même temps (pour envoyer les valeurs de BDD1 et BDD2 à 'BDD à modifier'), je ferai un USE BDD1 et BDD2 (pas en même temps bien sûr!) ?
    Merci;

  17. #37

    Homme Profil pro
    Inscrit en
    décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2011
    Messages : 265
    Points : -8
    Points
    -8

    Par défaut

    J'ai une question.
    J'ai une dizaine de BDD identique, on voudraient les centraliser vers une seule BDD. La BDD à la même structure (comporte des clés ...).
    J'ai pensé à installer 10 BDD vierges (qui récupéreront les BACK UP des BDD), une autre BDD vierge qui permettra de centraliser les autre BDD.
    On voudraient une MAJ réguliére de la BDD commune.
    Code sql :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    INSERT INTO bdd3.table_n n
    SELECT *
    FROM bdd_x.table_n nx
    WHERE NOT EXISTS
    (
    	SELECT 1
    	FROM bdd3.table_n n3
    	WHERE n3.colA = nx.colA
    		AND n3.colB = nx.colB
    		-- etc.
    )
    En réutilisant ce bout de code, je pense que le script serait trés trés long (10 tables par BDD, 10 BDD...) et en plus je ne sais pas si j'aurai des problémes au niveau des clés.
    Je voudrai savoir s'il y a un moyen d'envoyer les données de chaque BDD vers la BDD commune plus facilement.
    Je ne sais pas si une réplication maitre/esclave conviendrait car nos applications doivent communiquer avec les BDD en local (au cas ou on a un incident réseau).
    Merci

  18. #38

    Homme Profil pro
    Inscrit en
    décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2011
    Messages : 265
    Points : -8
    Points
    -8

    Par défaut

    Je reformule ma demande :
    J'ai trois BDD de même structure. Une BDD sera la BDD commune (data des deux autre BDD).
    A partir d'un script en PHP, je voudrai alimenter la BDD commune (voir le script précédent).
    Les tables contiennent des clés ... Je voulais savoir si on envois des data des BDD1 et BDD2 vers la BDD3, les clés ne sauront plus les mêmes (ex: BDD1 l'id d'une table va de 1 à 5 et BDD2 de 1 à 3 donc sur la BDD3 de 1 à 8 par exemple), les données seront t-ils toujours liés ? Ou bien on ne pourra plus exploiter ces données sur la BDD commune ?
    Merci;

  19. #39

    Homme Profil pro
    Inscrit en
    décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2011
    Messages : 265
    Points : -8
    Points
    -8

    Par défaut

    Personne ?
    Le script doit :
    - Récupérer les back up des BDD 1 et BDD 2 (les derniers back up)
    - Importer les back up dans BDD_1 et BDD_2 (temporairement, pour ensuite exporter vers la BDD commune:BDD3)
    - Récupérer les lignes non identiques de la BDD_1 dans la BDD commune (IDEM pour BDD_2).
    J'ai pensé à un script en batch, aprés avoir récupérer et importer les back up dans les BDD_1 et BDD_2 j'execute un script sql de la manière suivante :
    Code :
    "C:\Program Files\MySQL\mysql server 5.1\bin\mysql.exe" -u root  <"monRep\fichier.sql"
    Dans le fichier fichier.sql j'ai :
    Code sql :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    USE bdd_3;
     
    INSERT INTO bdd_3.calib
    SELECT *
    FROM bdd_2.calib
    WHERE NOT EXISTS
    (
    	SELECT 1
    	FROM bdd_3.calibration
    	WHERE bdd_3.calib_name = bdd2.calib_name
    		AND bdd_3.calib_tol = bdd_2.calib_tol
    			AND bdd_3.calib_time = bdd_2.calib_time
     
    );
    Merci de votre aide (la partie remplissage de la BDD3 à partir de BDD 1 et 2 fonctionne pas )

  20. #40
    Modérateur
    Avatar de CinePhil
    Homme Profil pro Philippe Leménager
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    13 773
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Leménager
    Âge : 51
    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 : 13 773
    Points : 22 995
    Points
    22 995

    Par défaut

    J'ai l'impression que c'est la même question qu'au début et la réponse a été traitée progressivement durant les deux pages de la discussion.
    Tu reviens dessus un mois et demi plus tard sans que ça ait apparemment évolué.
    Ne t'étonne pas de ne pas avoir de réponse !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
    « 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 !

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •