2013-10-24 14 views
9

誰かがSQLを使用してテーブル定義を抽出する方法を教えていただけますか? Oracleスキーマからすべてのテーブルのデータ型およびその他の情報を抽出したいと考えています。私は約100のテーブルを持っています。SQLまたはToadを使用してテーブル定義を抽出する方法

Oracleスキーマの完全なドキュメントが必要です。私のスキーマ名は "cco"です。

これをSQLで実行できますか?

Toad for Dataアナリスト3.3を使用しています。このツールが役立つかどうか教えてください。

+0

あなたはのデータ型を表示するために、データアナリストのためのヒキガエルを使用することができ、テーブルの多くを持っていない場合すべてのテーブル。 オブジェクトエクスプローラから行うことができます。テーブル名をダブルクリックすると、新しい列の必要な情報がタブの列に表示されます。 – Shann

+0

私は100以上のテーブルを持っています。今私はドキュメントの目的のためのすべてのテーブル情報を抽出したい – santhosha

+0

@サントス私はテーブルのデータ型を取得するためのクエリを投稿しています。 – Shann

答えて

5

あなたはこれを試すことができます -

select * from all_tab_cols 
where owner = 'CCO'; 
3

あなたがテーブルを使用することができます:USER_TAB_COLUMNS

select 
table_name, 
column_name, 
data_type, 
data_length, 
data_precision, 
nullable 
from USER_TAB_COLUMNS 
where table_name = '<table_name>'; 

クエリの例の下に検索これはまた、より多くの情報を得るためにselect *を行うことができます唯一の例です。

あなたもテーブルを使用することができます:あなたが使用することができ、より良い表示のためのall_tab_columns

を:

select table_name,column_name, data_type|| 
case 
when data_precision is not null and nvl(data_scale,0)>0 then '('||data_precision||','||data_scale||')' 
when data_precision is not null and nvl(data_scale,0)=0 then '('||data_precision||')' 
when data_precision is null and data_scale is not null then '(*,'||data_scale||')' 
when char_length>0 then '('||char_length|| case char_used 
                 when 'B' then ' Byte' 
                 when 'C' then ' Char' 
                 else null 
              end||')' 
end||decode(nullable, 'N', ' NOT NULL') as data_type 
from user_tab_columns 
where table_name = '<TABLE_NAME>'; 
+0

私はあなたの文書に結果を貼り付けることができるSQLの部分を追加しました。 – Shann

6

をすべてのテーブルのDDLを取得するには現在のユーザーの、あなたはこれを使用することができます:

select dbms_metadata.get_ddl('TABLE', table_name) 
from user_tables; 

CLOB列の内容を正しく表示できるようにSQLクライアントを調整する必要があります。 (他のオブジェクトのDDLを取得する方法についてなど)

詳細は、マニュアルに記載されています:http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_metada.htm

関連する問題