我正在從一個系統遷移到另一個系統,在此過程中,我將同時運行這兩個系統。我需要能夠在保持每個表的主鍵的同時,從一個表向另一個表進行單向同步。如何同步兩個具有不同結構的MySQL表?
在這個例子中,我有兩個表(A)和(B)。我需要根據公共外鍵(下面的match1和match2)將表B中的value1和value2(下面)同步到表A中。表A將具有比表B更多的字段,並且B中有一些字段不會被同步。
我怎樣才能做到以下幾點:
- 插入到已被添加到B
- 從一個已經的B移除了改變
- 更新記錄中刪除值從乙
這裏領域是一些演示數據:
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');
我現在要做的方向是在兩個表之間創建一個合併表,並相應地構建查詢。例如:
create table ab as (select * from a, b);
你有什麼建議?
你是什麼意思「使數據看起來像B」?你想讓A包含與B相同的數據,只需添加其他字段? – MBillock 2009-09-30 17:50:40
我同意MBillock。請澄清。 – exhuma 2009-09-30 17:52:50
我編輯,以澄清我想要完成的。主要問題是維護合併中的主鍵。 – Dooltaz 2009-09-30 18:13:52