web-dev-qa-db-ja.com

SQLまたはToadを使用してテーブル定義を抽出する方法

SQLを使用してテーブル定義を抽出する方法を教えてもらえますか?すべてのテーブルのデータ型と他の情報をOracleスキーマから抽出したい。約100個のテーブルがあります。

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

SQLでこれを行うことはできますか?

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

12
santhosha

これを試すことができます-

select * from all_tab_cols
where owner = 'CCO';
6
Aditya Kakirde

現在のユーザーのすべてのテーブルの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 =

テーブルを使用できます: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>';
7
Shann