Как я могу синхронизировать две таблицы MySQL, которые имеют различные структуры?

Если Вы твердый код вставленный класс, Вам нужен тот класс, доступны во время компиляции. С конфигурационным файлом Вы могли изменить используемую пилу (в Вашем случае) во времени выполнения, не перекомпилировав и даже использовать пилу, взятую от новой банки, которую Вы просто поместили в путь к классу. Если это стоит дополнительной сложности, зависит от задачи, которую необходимо решить.

5
задан Brian Tompsett - 汤莱恩 11 January 2017 в 09:20
поделиться

3 ответа

1. Вставьте в A все, что было добавлено в B

INSERT INTO a(id1, match1, value1)
SELECT id2, match2, value2
FROM b WHERE NOT EXISTS (SELECT 1 FROM a WHERE a.match1 = b.match2)

2. Удалите из A все, что было удалено из B

DELETE FROM a
WHERE match1 IN (SELECT match1 FROM a INNER JOIN B ON A.match1 = B.match2)

3. Обновите A с измененными полями из B

UPDATE a
SET value1 = (SELECT value2 FROM b WHERE a.match1 = b.match2)
4
ответ дан 14 December 2019 в 08:55
поделиться

Я построил хранимую процедуру для правильного объединения всего. Спасибо за ответы. Это то, чем я буду заниматься.

BEGIN

DECLARE loop_done INT;
DECLARE orphan varchar(255);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET loop_done=1;

INSERT INTO a(id1, match1, value1)
SELECT '', match2, value2
FROM b WHERE NOT EXISTS (SELECT 1 FROM a WHERE a.match1 = b.match2);

UPDATE a SET value1 = (SELECT value2 FROM b WHERE a.match1 = b.match2);

/* This Delete statement works better for MySQL. */
SET loop_done=0;
SET orphan=null;
SELECT id1 INTO orphan FROM a left join b on (b.match2 = a.match1) where b.id2 is null LIMIT 1;
WHILE (loop_done=0) DO
 DELETE FROM a WHERE id1=orphan;
 SELECT id1 INTO orphan FROM a left join b on (b.match2 = a.match1) where b.id2 is null LIMIT 1;
END WHILE;

END
3
ответ дан 14 December 2019 в 08:55
поделиться
TRUNCATE TABLE A;

INSERT INTO A (id1, match1, value1)
    SELECT id2, match2, value2 FROM B;
0
ответ дан 14 December 2019 в 08:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: