Je suis en train de migrer d'un système à un autre et, en cours de route, j'exécuterai les deux systèmes simultanément. J'ai besoin de pouvoir me synchroniser de façon unidirectionnelle d'une table à l'autre tout en conservant les clés primaires de chaque table.Comment synchroniser deux tables MySQL ayant des structures différentes?
Dans cet exemple, j'ai deux tables (A) et (B). Je dois synchroniser value1 et value2 (ci-dessous) de la table B à la table A basée sur une clé étrangère commune (match1 et match2 ci-dessous). Le tableau A aura des champs supplémentaires que le tableau B, et certains champs de B ne seront pas synchronisés.
Comment puis-je faire ce qui suit:
- Insérer dans une des valeurs qui a été ajouté à B
- Retirer du les enregistrements qui ont été retirés de B
- Mise à jour A la changé champs de B
Voici quelques données de démonstration:
DROP TABLE IF EXISTS `a`;
CREATE TABLE IF NOT EXISTS `a` (
`id1` int(10) unsigned NOT NULL,
`match1` int(10) unsigned NOT NULL,
`value1` varchar(255) NOT NULL,
PRIMARY KEY (`id1`)
);
INSERT INTO `a` (`id1`, `match1`, `value1`) VALUES
(1, 1, 'A'),
(2, 2, 'A'),
(3, 3, 'B'),
(4, 4, 'C'),
(5, 5, 'C');
DROP TABLE IF EXISTS `b`;
CREATE TABLE IF NOT EXISTS `b` (
`id2` int(10) unsigned NOT NULL,
`match2` int(10) unsigned NOT NULL,
`value2` varchar(255) NOT NULL,
PRIMARY KEY (`id2`)
);
INSERT INTO `b` (`id2`, `match2`, `value2`) VALUES
(1, 1, 'A'),
(2, 2, 'A'),
(3, 3, 'B'),
(4, 5, 'D'),
(5, 6, 'D'),
(6, 7, 'F');
La direction que je vais actuellement est de créer une table fusionnée entre les deux tables, et de construire les requêtes en conséquence. Par exemple:
create table ab as (select * from a, b);
Que suggérez-vous?
Que voulez-vous dire par "faire ressembler les données dans A"? Voulez-vous que A contienne les mêmes données que B, juste avec des champs supplémentaires? – MBillock
Je suis d'accord avec MBillock. Précisez s'il vous plaît. – exhuma
J'ai édité pour clarifier ce que j'essaie d'accomplir. Le problème principal est de maintenir les clés primaires dans la fusion. – Dooltaz