Oracle 2つのデータベースにあるテーブルのカラムの差を確認するには?

ショコラ
ショコラ

Oracle 2つのデータベースにあるテーブルのカラムの差を確認するには?

2つのデータベースがあります。
そこには同じテーブルが存在するのですが、どちらかのデータベースのテーブルが多かったり、alter table などで一部カラムが変更されています。
さて、この差分をどうやって調べようか?という状況です。

この場合の対応方法は、
①2つのデータベースのテーブル情報を取得しファイルに保存する。
②WinMerge等でファイルを比較する。
でキメマス。ノープログラム。

もっさん先輩
もっさん先輩

2つのデータベースで↓下のSQLを実行し、テーブル情報をファイルに保存します。

SELECT
    table_name,
    column_name,
    data_type,
    data_length
  FROM
    user_tab_columns
  ORDER BY
    table_name,column_name

あとは WinMerge でファイルを比較してみましょう。

他にも「あるカラムを含むテーブルを探す」ことにも使えますね。

SELECT
    table_name,
    column_name,
    data_type,
    data_length
  FROM
    user_tab_columns
  where column_name='NAME'
  ORDER BY
    table_name,column_name

↑例えば、NAMEカラムを持つテーブルを一覧表示する。とかです。

以上

Scroll to Top