0

2 つの別個のデータベースから 2 つの MySql テーブルを比較しようとしています。1 つは MyIsam エンジンを使用し、もう 1 つは InnoDb エンジンを使用しています。

テーブルに同じ値が格納されているかどうかをすばやく判断できる必要があります。MD5 ハッシュ比較を使用してこれを開始しましたが、失敗しました。dbエンジンが違うからだと思います。

2 つのテーブルが等しいかどうかを比較する方法について、誰かアドバイスはありますか?

:

これは C#.NET で作成されているアプリケーションなので、MySql エンジンの実装ではなく、C# の実装を希望します。一般に、テーブルごとに常に 210 の列と 0 ~ 100 の行があります。

4

1 に答える 1

1

もちろん、巨大なテーブルのソリューションではなく、自動インクリメントは異なります。特定のオカレンスを持つ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"
于 2013-05-20T15:07:24.047 に答える