Oracleデータベースで、2つのテーブルのデータ内容が完全に同一かどうかを調べる簡単な方法はないでしょうか?現在それぞれのテーブルデータをテキストファイルに出力し出力した2つのファイルをfcもしくはdiffコマンドで比較していますが、テーブル数、データ量も多いため、もっと簡単な方法がないかどうかを知りたいです。このような機能を持つソフトウェアの紹介や考え方のヒントなど、幅広い情報をお待ちしています。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/02/23 23:36:05
  • 終了:--

回答(2件)

id:kuippa No.1

くいっぱ回答回数1030ベストアンサー獲得回数132004/02/23 23:53:29

ポイント40pt

http://tsubosak.hp.infoseek.co.jp/1-10/3-select.html

集合演算子 UNION と UNION ALL について

ぅぉ。入力形式が変わっててビックリした!

って事で、思いつきなので忘れないうちに。

union で二つのテーブルからもってきたレコードのカウントを調べてみてはどうですか?

内容が異なってれば、2件になるはず。

テーブル数次第では偉いこっちゃになりますが・・・。

id:fuji-z

ありがとうございます。

試してみますがUNIONだとテーブル数が多いので大変そうです。

2004/02/24 00:22:32
id:ohmix1 No.2

ohmix1回答回数235ベストアンサー獲得回数142004/02/25 11:19:35

ポイント70pt

http://www.vector.co.jp/soft/winnt/business/se300007.html?g

Vector:データーベースコンペア (WindowsNT/2000/XP/Vista / ビジネス) - ソフトの詳細

上記回答のように、SQLで何とかするのか簡易であると思いますが、DBコンペアというソフトがあるみたいです。(参考URL)

また、以下のSQLでもできした。(念のため確認願います)

1. 比較する2つのテーブルの行数を比較

  -->レコード数が異なれば一致していない

2. 同じならTABLE1からTABLE2にあるレコードと同じものを削除(MINUS)する

  -->結果が1レコード以上なら一致していない

SELECT ’TRUE’ FROM DUAL

WHERE (SELECT COUNT(*) FROM TABLE1) = (SELECT COUNT(*) FROM TABLE2)

AND NOT EXISTS (SELECT * FROM TABLE1 MINUS SELECT * FROM TABLE2)

まったく同じならTRUEが出力されます。

ただし、同一テーブルにまったく同じレコードがあった場合にどうなるかは未確認です。

id:fuji-z

ありがとうございます。とりあえず教えていただいたツールを試してみたいと思います。

2004/02/26 00:05:49

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません