Fusion de BDD

Fusion de BDD - SQL/NoSQL - Programmation

Marsh Posté le 12-10-2012 à 12:31:19    

Bonjour  :hello:  
On a deux postes ayant chacun une BDD de structure identique, on voudraient les centraliser régulièrement vers une 3ème BDD (je précise que l'on a des clés dans les BDD ... ) . Avez vous une solution ? (j'avais penser à une back up des deux BDD et un import sur la 3ème BDD même si les ID seront décalés on peut toujours se retrouver avec les références je pense)
Merci

Reply

Marsh Posté le 12-10-2012 à 12:31:19   

Reply

Marsh Posté le 12-10-2012 à 14:36:56    

utiliser un ETL : en gratuit, talend est très bien
ça va te permettre en bonus de gérer la planification, la reprise sur erreur,les rapports, ....


Message édité par flo850 le 12-10-2012 à 14:37:22

---------------

Reply

Marsh Posté le 25-10-2012 à 10:11:14    

Merci, je reformule :
On a deux serveurs SQL avec deux BDD de structure identique (régulièrement on fait des BACK UP et DELETE car on se retrouve avec énormément de ligne ...). On me demande d'avoir une 3ème BDD sur un 3ème serveur SQL qui regroupe les données des deux BDD (il n'y a pas de clés dans la BDD ).
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 ...) ;
- Importer les deux BDD vers le 3ème serveur (uniquement les nouvelles données et sans écraser les anciennes)
Je programmerai après l'execution du script (si c'est pas possible avec un logiciel, même payant!)
Je ne vois pas comment m'y prendre ?
Merci;


Message édité par lp77 le 25-10-2012 à 10:11:39
Reply

Marsh Posté le 25-10-2012 à 10:15:10    

Essaye talend data intégration ( http://fr.talend.com/products/data-integration )  
 
Là, tu es en train de réinventer la roue.


---------------

Reply

Marsh Posté le 25-10-2012 à 10:20:31    

Ok, je vais voir comment m'y prendre.

Reply

Marsh Posté le 25-10-2012 à 10:25:27    

ca a l'air d'être un logiciel difficile à utiliser, peux tu me donner quelques indications ?

Reply

Marsh Posté le 04-01-2013 à 14:27:09    

Un nouveau soucis (pour les précédents ca c'est amélioré) , j'ai l'erreur suivante (je réalise un script pour fusionner deux bdd)

Code :
  1. Duplicate entry '3' FOR KEY 'PRIMARY'


Au fait sur la BDD1 j'ai une ligne avec une clés primaire 3 et sur la BDD2 j'ai déjà une ligne avec l'id 3 mais ce ne sont pas les mêmes informations ... Il refuse d'importer la ligne de la BDD2 !
Avec TALEND je serai épargner de ce probléme (je ne l'ai encore jamais utilisée, j'étais partis sur un script sql mais ça bloque ...)
Merci beaucoup!  

Reply

Marsh Posté le 04-01-2013 à 17:02:49    

L'idéal serait d'importer dans bdd3 uniquement les champs suivants la clés primaires, (la clés primaires s'incrémente toute seules de toute façons), je ne vois pas comment faire ?
J'ai remplacé l'étoile par les champs (sauf la clés primaire) mais je suis obligé de la mettre !

Code :
  1. INSERT INTO bdd3.config
  2. SELECT *
  3. FROM bdd2.config bdd2


Merci beaucoup!

Reply

Marsh Posté le 05-01-2013 à 19:29:29    

Personne ?
J'ai deux BDD de même structure, le but est d'importer les données de la 1ére BDD dans la 2éme, pour éviter les doublons j'aimerai donc ne pas copier le champs _id (clés primaires) des tables, c'est possible ?
Ma requête pour l'instant :

Code :
  1. INSERT INTO bdd3.config
  2. SELECT *
  3. FROM bdd2.config bdd2


J'avais penser à mettre à la place de l'étoile les collones suivant la clés primaire mais j'ai un message d'erreur (count colonm) ...
Merci de m'aider !!!

Reply

Marsh Posté le 06-01-2013 à 17:50:16    

Personne ? Je galère vraiment sur ce sujet !!!!

Reply

Marsh Posté le 06-01-2013 à 17:50:16   

Reply

Marsh Posté le 06-01-2013 à 20:23:18    

a mon sens avoir des BDD identiques par postes (qu'il faut après synchroniser ou fusionner régulièrement) c'est qu'il y a un problème dès le départ d'architecture
Ne serait-ce pas possible plutôt de n'avoir qu'une seule et unique BDD avec tes 2 postes reliés dessus ?
-> c'est justement à ça que sert une BDD
si un jour tu as un 3ème poste tu refais une nouvelle BDD ?

Reply

Marsh Posté le 06-01-2013 à 20:26:48    

non au fait elles sont sur des bancs de tests, et les bancs sont déconnectes au réseau de l'entreprise

Reply

Marsh Posté le 06-01-2013 à 20:27:50    

Aucune idée pour éviter de copier le champs clés primaire de chaque table avec la requête suivante :
 
    INSERT INTO bdd3.config
    SELECT *
    FROM bdd2.config bdd2

Reply

Marsh Posté le 06-01-2013 à 22:52:29    

Et la requête suivante pourrait-elle correspondre à ce que tu souhaites ? :??:
 

Code :
  1. INSERT INTO bdd3 (col1, col2, ..., coln)
  2. SELECT col1, col2, ..., coln
  3. FROM bdd2


---------------
And in the end, the love you take is equal to the love you make
Reply

Marsh Posté le 06-01-2013 à 23:03:41    

A la place de l'étoile j'avais déjà mis les champs suivant la clés primaire, mais il y avait une erreur 'count column' !

Reply

Marsh Posté le 06-01-2013 à 23:13:39    

J'avais bien lu  [:cupra]  Mais as-tu essayé de donner la liste des colonnes à remplir dans la requête ?


---------------
And in the end, the love you take is equal to the love you make
Reply

Marsh Posté le 06-01-2013 à 23:25:58    

d'accord je verrai demain matin, je te donnerai de mes nouvelles !

Reply

Marsh Posté le 07-01-2013 à 09:59:12    

Non il y a une erreur de syntaxe SQL!

Reply

Marsh Posté le 08-01-2013 à 10:08:21    

J'ai commencé à développer un script ... Par contre je dois proposer plusieurs solutions, j'en ai une autre en tête :
Chaque bancs de tests dispose de sa propre BDD (même structure) on voudrait avoir une BDD regroupant toutes les BDD des bancs (MAJ fréquente car après çela je développerai une application d'exploitation des BDD depuis la BDD centralisée). A savoir que l'on peut pas mettre les BDD en réseau car les bancs peuvent être déconnectés du réseau et ils doivent toujours pouvoir faire les tests de produits ...
J'ai donc pensé à dupliquer les BDD sur chaque bancs (back up et importation planifiée) et ainsi utiliser une réplication vers le serveur centralisé (au moins la MAJ sera automatisée pour ce cas). Les bancs pourront continués à fonctionner en cas de non accès au réseau ainsi.  
Avez vous une idée ?

Reply

Marsh Posté le 08-01-2013 à 10:25:50    

Avec une replication tu auras les meme problemes de collision de primary keys.
 
Le fix de Soileh devrai fonctionner, trouve et répare l'erreure de syntaxe :)

Reply

Marsh Posté le 08-01-2013 à 10:39:51    

Il n'y a aucune autre solutions ?

Reply

Marsh Posté le 08-01-2013 à 17:02:22    

Si, il y en a pleins, mais elles sont toutes hors de protée si tu n'arrives pas a résoudre un probleme de base.
 
L'integrité d'une DB est un principe de base, donc tu devras faire avec, peut importe la solution que tu utiliseras.
 
Dans ce cas ci c'est juste un petit probleme de syntaxe, ca devrai etre facile a reparer et tu pourras faire la copie de tes deux tables en une.


Message édité par Oliiii le 08-01-2013 à 17:02:40
Reply

Marsh Posté le 10-01-2013 à 09:32:53    

J'ai un autre soucis, je veux retirer l'auto incrémentation d'une clés primaire, mais je n'y arrive pas :

Code :
  1. ALTER TABLE BDD0.table1
  2. DROP PRIMARY KEY;


Au fait je veux casser la clés primaire, et y ajouter ensuite une autre collone dans la BDD de synchronisation afin d'identifier la BDD et d'éviter les doublons (vu que la la clés primaire sera composé de deux champs ...)
MERCI!

Reply

Marsh Posté le 10-01-2013 à 10:16:43    

La syntaxe (pour SQL Server) c'est: ALTER TABLE MaTable DROP CONTRAINT PrimaryKeyConstraintName

Reply

Marsh Posté le 10-01-2013 à 11:21:35    

Comme autre solution, il y a TALEND ? Est -il facile à configurer pour ce type d'opération ?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed