[英]Comparing InnoDb and MyIsam MySql Tables for Equality
我试图比较来自两个不同数据库的两个MySql表,一个使用MyIsam引擎,另一个使用InnoDb引擎。
我需要能够快速确定表是否存储相同的值。 我通过使用MD5哈希比较开始,但是失败了。 我认为这是因为数据库引擎不同。
有人对我如何比较两个表是否相等有任何建议吗?
注意 :
这是一个用C#.NET编写的应用程序,因此我更喜欢C#实现,而不是MySql引擎实现。 通常,每个表始终有210列,且介于0到100行之间。
当然不是大表的解决方案,自动增量是不同的。 您可以使用具有一定出现次数的cron作业来自动执行此操作,或者如果您说在cron作业看到,清除并开始的某个表中放入一个值,则可以自动执行此操作。
CREATE TABLE charlie1
( billybob INT NOT NULL,
birthdate DATETIME NOT NULL,
funny_num FLOAT NOT NULL
)ENGINE=INNODB;
INSERT INTO charlie1 (billybob,birthdate,funny_num) VALUES (1,'2006-01-02',28832.123);
INSERT INTO charlie1 (billybob,birthdate,funny_num) VALUES (2,'2004-09-02',18832.888);
INSERT INTO charlie1 (billybob,birthdate,funny_num) VALUES (3,'2006-07-03',28332.123);
INSERT INTO charlie1 (billybob,birthdate,funny_num) VALUES (4,'2006-01-02',28852.777);
SELECT billybob,birthdate,funny_num
FROM charlie1
ORDER BY billybob
INTO OUTFILE '/tmp/charlie1.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
CREATE TABLE charlie2
( billybob INT NOT NULL,
birthdate DATETIME NOT NULL,
funny_num FLOAT NOT NULL
)ENGINE=MYISAM;
INSERT INTO charlie2 (billybob,birthdate,funny_num) VALUES (1,'2006-01-02',28832.123);
INSERT INTO charlie2 (billybob,birthdate,funny_num) VALUES (2,'2004-09-02',18832.888);
INSERT INTO charlie2 (billybob,birthdate,funny_num) VALUES (3,'2006-07-03',28332.123);
INSERT INTO charlie2 (billybob,birthdate,funny_num) VALUES (4,'2006-01-02',28852.777);
SELECT billybob,birthdate,funny_num
FROM charlie2
ORDER BY billybob
INTO OUTFILE '/tmp/charlie2.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
i changed data in the file to show diff picks it up:
root@hp:/tmp# diff /tmp/charlie1.csv /tmp/charlie2.csv
2c2
< "2","2004-09-02 00:00:00","18832.9"
---
> "2","2004-09-02 00:00:00","18832.8"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.