OVH Cloud OVH Cloud

Fusion de bases

8 réponses
Avatar
Nico44
Bonjour =E0 toutes et =E0 tous,

J'ai deux bases de donn=E9es qui ont exactement la m=EAme=20
structure.
Je voudrais les fusionner pour n'en faire plus qu'une.

Existe-t-il des outils pour =E7a (et si oui, lesquels), o=F9=20
dois-je moi m=EAme programmer cet outil?

8 réponses

Avatar
Dominique
Bonjour,

Si tes 2 bases ont exactement la même structure, il suffit
juste d'importer les données des tables d'une base dans
l'autre. Attention aux doublons éventuels !

Dominique
-----Message d'origine-----
Bonjour à toutes et à tous,

J'ai deux bases de données qui ont exactement la même
structure.
Je voudrais les fusionner pour n'en faire plus qu'une.

Existe-t-il des outils pour ça (et si oui, lesquels), où
dois-je moi même programmer cet outil?
.



Avatar
manu9292
Bonjour,

C'est très simple tu crée une requête union :
SELECT * FROM Table1 UNION ALL SELECT * FROM Table2
que tu appelle R_UNION par exemple, et tu fais ensuite une requête création
de table, qui prend R_UNION comme données.

Voilà


Bonjour à toutes et à tous,

J'ai deux bases de données qui ont exactement la même
structure.
Je voudrais les fusionner pour n'en faire plus qu'une.

Existe-t-il des outils pour ça (et si oui, lesquels), où
dois-je moi même programmer cet outil?



Avatar
Mon problème, c'est bien justement ces doublons...
La plupart des tables ont une gestion de clé primaire par
des numéros auto, numéros auto qui deviennent clé
étrangère dans d'autres tables.
J'ai ainsi dans la table 1 de ma base 1 un enregistrement
n°1, et un autre enregistrement n°1 dans la table 1 de ma
base 2.
En insérant les enregistrements de la table 1 de ma base 2
dans la table 1 de ma base 1, la séquence des numéros
autos s'incrémente automatiquement. Le problème est
justement que l'enregistrement n°1 de la table 1 de ma
base 2 devient le n°2 de la table 1 de ma base 1, ce qui
pose problème pour faire mon lien avec la table 2 de la
base 2.
J'espère être clair...

Je crois que je vais devoir gérer manuellement...

Merci pour vos réponses
-----Message d'origine-----
Bonjour,

Si tes 2 bases ont exactement la même structure, il
suffit

juste d'importer les données des tables d'une base dans
l'autre. Attention aux doublons éventuels !

Dominique
-----Message d'origine-----
Bonjour à toutes et à tous,

J'ai deux bases de données qui ont exactement la même
structure.
Je voudrais les fusionner pour n'en faire plus qu'une.

Existe-t-il des outils pour ça (et si oui, lesquels), où
dois-je moi même programmer cet outil?
.

.





Avatar
Patrice
Salut,

A mon avis, tu dois passer en VBA en lisant ta table1
base2, et pour chaque enregistrement, inserer la ligne
dans table1 base1, sans clé primaire qui sera automatique,
en repérant le numero d'enregistrement, et les lignes
table2 base2 dans table2 base1 qui correspondaient avant,
en changeant la clé avec le nouveau numero (clair ?)

pour repérer le numero d'enregistrement, tu peux utiliser
au début de la procédure dmax(table1 base1,clé), stocker
cette valeur dans intClé, et à chaque nouvelle ligne,
intclé = intclé+1 correspond au nouveau numero de ligne à
utiliser pour table2

le code n'est pas très difficile, mais prends garde à
sauvegarder dans une nouvelle table tes anciennes données,
ou le résultat anciennes + nouvelles au cas ou ..

bon courage.





-----Message d'origine-----
Mon problème, c'est bien justement ces doublons...
La plupart des tables ont une gestion de clé primaire par
des numéros auto, numéros auto qui deviennent clé
étrangère dans d'autres tables.
J'ai ainsi dans la table 1 de ma base 1 un enregistrement
n°1, et un autre enregistrement n°1 dans la table 1 de ma
base 2.
En insérant les enregistrements de la table 1 de ma base
2

dans la table 1 de ma base 1, la séquence des numéros
autos s'incrémente automatiquement. Le problème est
justement que l'enregistrement n°1 de la table 1 de ma
base 2 devient le n°2 de la table 1 de ma base 1, ce qui
pose problème pour faire mon lien avec la table 2 de la
base 2.
J'espère être clair...

Je crois que je vais devoir gérer manuellement...

Merci pour vos réponses
-----Message d'origine-----
Bonjour,

Si tes 2 bases ont exactement la même structure, il
suffit

juste d'importer les données des tables d'une base dans
l'autre. Attention aux doublons éventuels !

Dominique
-----Message d'origine-----
Bonjour à toutes et à tous,

J'ai deux bases de données qui ont exactement la même
structure.
Je voudrais les fusionner pour n'en faire plus qu'une.

Existe-t-il des outils pour ça (et si oui, lesquels),




dois-je moi même programmer cet outil?
.

.


.






Avatar
Yann
Salut,
Tu dois faire cela en plusieurs étapes :

1 - Copie tes 2 bases.

2 - Pour toutes les tables qui n'ont pas de parents,
UPDATE Table1, Table2
SET Table1.Champ1 = Table2.Champ1, Table1.Champ2 =
Table2.Camp2, ...
WHERE Table2.Champ1 & " & " & Table2.Champ2 & " & " & ...
NOT IN (SELECT Table1.Champ1 & " & " & Table1.Champ2 & "
& " & ... FROM Table1;);
Attention, ne prend pas la clé primaire qui ne voudra
rien dire...

3 - Pour les tables filles, essai quelque chose comme ça
UPDATE Table1, Table2
SET Table1.Champ1 = (SELECT TOP 1 TableMere1.Cle FROM
TableMere INNER JOIN TableMere2 ON TableMere1.Champ1 =
TableMere2.Champ1 AND TableMere1.Champ2 =
TableMere2.Champ2 AND ...), Table1.Champ2 =
Table2.Camp2, ...
WHERE Table2.Champ1 & " & " & Table2.Champ2 & " & " & ...
NOT IN (SELECT Table1.Champ1 & " & " & Table1.Champ2 & "
& " & ... FROM Table1;);

Bye
Yann

-----Message d'origine-----
Salut,

A mon avis, tu dois passer en VBA en lisant ta table1
base2, et pour chaque enregistrement, inserer la ligne
dans table1 base1, sans clé primaire qui sera
automatique,

en repérant le numero d'enregistrement, et les lignes
table2 base2 dans table2 base1 qui correspondaient
avant,

en changeant la clé avec le nouveau numero (clair ?)

pour repérer le numero d'enregistrement, tu peux
utiliser

au début de la procédure dmax(table1 base1,clé), stocker
cette valeur dans intClé, et à chaque nouvelle ligne,
intclé = intclé+1 correspond au nouveau numero de ligne
à

utiliser pour table2

le code n'est pas très difficile, mais prends garde à
sauvegarder dans une nouvelle table tes anciennes
données,

ou le résultat anciennes + nouvelles au cas ou ..

bon courage.





-----Message d'origine-----
Mon problème, c'est bien justement ces doublons...
La plupart des tables ont une gestion de clé primaire
par


des numéros auto, numéros auto qui deviennent clé
étrangère dans d'autres tables.
J'ai ainsi dans la table 1 de ma base 1 un
enregistrement


n°1, et un autre enregistrement n°1 dans la table 1 de
ma


base 2.
En insérant les enregistrements de la table 1 de ma
base


2
dans la table 1 de ma base 1, la séquence des numéros
autos s'incrémente automatiquement. Le problème est
justement que l'enregistrement n°1 de la table 1 de ma
base 2 devient le n°2 de la table 1 de ma base 1, ce
qui


pose problème pour faire mon lien avec la table 2 de la
base 2.
J'espère être clair...

Je crois que je vais devoir gérer manuellement...

Merci pour vos réponses
-----Message d'origine-----
Bonjour,

Si tes 2 bases ont exactement la même structure, il
suffit

juste d'importer les données des tables d'une base
dans



l'autre. Attention aux doublons éventuels !

Dominique
-----Message d'origine-----
Bonjour à toutes et à tous,

J'ai deux bases de données qui ont exactement la même
structure.
Je voudrais les fusionner pour n'en faire plus qu'une.

Existe-t-il des outils pour ça (et si oui, lesquels),




dois-je moi même programmer cet outil?
.

.


.


.







Avatar
Patrice
Salut manu

Ta solution peut fonctionner pour la table1, mais pour
récupérer les données avec les bonnes relations pour la
table2, comment fais tu ?
ou alors, en utilisant une requete pour mettre à jour dans
table2 la clé avec chpclé = chpclé + (dernier
enregistrement de table1 base1)
Ensuite, UNION des 2 table2 ...

on peut, mais il faut être sur que tous les numeros de
table1 base2 se suivaient (pas d'enregistrement d'effacé)



-----Message d'origine-----
Bonjour,

C'est très simple tu crée une requête union :
SELECT * FROM Table1 UNION ALL SELECT * FROM Table2
que tu appelle R_UNION par exemple, et tu fais ensuite
une requête création

de table, qui prend R_UNION comme données.

VoilÃ


Bonjour à toutes et à tous,

J'ai deux bases de données qui ont exactement la même
structure.
Je voudrais les fusionner pour n'en faire plus qu'une.

Existe-t-il des outils pour ça (et si oui, lesquels),
où


dois-je moi même programmer cet outil?

.





Avatar
Dominique
Bonjour,

Effectivement, les liens basés sur les numéroauto posent
ici des problèmes.
Voici une solution que j'ai déjà expérimentée :
- dans chaque table et sous table, tu crées un nouveau
champ qui permet de recréer la liaison. le champ dans
chaque base ne doit pas avoir le même nom.
- tu peux à ce moment là créer tes tables définitives par
requêtes création et ajout sans tenir compte des anciens
numéroautos
- tu créer un nouveau numéroauto sur chaque table
- tu mets à jour le champ N de ta relation 1 à N par des
requêtes mises à jour grâce aux champs que tu as créés.
- tu reconstruis ta relation définitive entre les 2 tables.

En résumé tu ne peux pas garder les numéroautos dans la
fusion des tables et les nouveaux champs que tu as créés
te permet de garder une trace le l'ancienne relation.
C'est sûr : c'est long et il faut être très méticuleux et
surtout faire des sauvegardes des bases.

Bon courage
Dominique

-----Message d'origine-----
Mon problème, c'est bien justement ces doublons...
La plupart des tables ont une gestion de clé primaire par
des numéros auto, numéros auto qui deviennent clé
étrangère dans d'autres tables.
J'ai ainsi dans la table 1 de ma base 1 un enregistrement
n°1, et un autre enregistrement n°1 dans la table 1 de ma
base 2.
En insérant les enregistrements de la table 1 de ma base
2

dans la table 1 de ma base 1, la séquence des numéros
autos s'incrémente automatiquement. Le problème est
justement que l'enregistrement n°1 de la table 1 de ma
base 2 devient le n°2 de la table 1 de ma base 1, ce qui
pose problème pour faire mon lien avec la table 2 de la
base 2.
J'espère être clair...

Je crois que je vais devoir gérer manuellement...

Merci pour vos réponses
-----Message d'origine-----
Bonjour,

Si tes 2 bases ont exactement la même structure, il
suffit

juste d'importer les données des tables d'une base dans
l'autre. Attention aux doublons éventuels !

Dominique
-----Message d'origine-----
Bonjour à toutes et à tous,

J'ai deux bases de données qui ont exactement la même
structure.
Je voudrais les fusionner pour n'en faire plus qu'une.

Existe-t-il des outils pour ça (et si oui, lesquels),




dois-je moi même programmer cet outil?
.

.


.






Avatar
Nico44
Merci à tous pour vos réponses.

Je pense que je vais partir sur la solution suivante :
1)Création d'une base intermédiaire avec un champ
supplémentaire dans chaque table pour stocker le N°
d'origine.
2)Récupération du N° le plus élevé dans chacune des tables
de la base 1
3)Copie de la base 2 dans la base intermédiaire à partir
du n° le plus élevé de chacune des tables de la base 1
4)Mise à jour des sous tables de la base intermédiaire
5)Copie de la base intermédiaire dans la base 1

Qu'en pensez-vous?


-----Message d'origine-----
Bonjour,

Effectivement, les liens basés sur les numéroauto posent
ici des problèmes.
Voici une solution que j'ai déjà expérimentée :
- dans chaque table et sous table, tu crées un nouveau
champ qui permet de recréer la liaison. le champ dans
chaque base ne doit pas avoir le même nom.
- tu peux à ce moment là créer tes tables définitives par
requêtes création et ajout sans tenir compte des anciens
numéroautos
- tu créer un nouveau numéroauto sur chaque table
- tu mets à jour le champ N de ta relation 1 à N par des
requêtes mises à jour grâce aux champs que tu as créés.
- tu reconstruis ta relation définitive entre les 2
tables.


En résumé tu ne peux pas garder les numéroautos dans la
fusion des tables et les nouveaux champs que tu as créés
te permet de garder une trace le l'ancienne relation.
C'est sûr : c'est long et il faut être très méticuleux et
surtout faire des sauvegardes des bases.

Bon courage
Dominique

-----Message d'origine-----
Mon problème, c'est bien justement ces doublons...
La plupart des tables ont une gestion de clé primaire
par


des numéros auto, numéros auto qui deviennent clé
étrangère dans d'autres tables.
J'ai ainsi dans la table 1 de ma base 1 un
enregistrement


n°1, et un autre enregistrement n°1 dans la table 1 de
ma


base 2.
En insérant les enregistrements de la table 1 de ma base
2

dans la table 1 de ma base 1, la séquence des numéros
autos s'incrémente automatiquement. Le problème est
justement que l'enregistrement n°1 de la table 1 de ma
base 2 devient le n°2 de la table 1 de ma base 1, ce qui
pose problème pour faire mon lien avec la table 2 de la
base 2.
J'espère être clair...

Je crois que je vais devoir gérer manuellement...

Merci pour vos réponses
-----Message d'origine-----
Bonjour,

Si tes 2 bases ont exactement la même structure, il
suffit

juste d'importer les données des tables d'une base dans
l'autre. Attention aux doublons éventuels !

Dominique
-----Message d'origine-----
Bonjour à toutes et à tous,

J'ai deux bases de données qui ont exactement la même
structure.
Je voudrais les fusionner pour n'en faire plus qu'une.

Existe-t-il des outils pour ça (et si oui, lesquels),




dois-je moi même programmer cet outil?
.

.


.


.