2013-10-24 24 views
9

有人可以告訴我如何使用SQL提取我的表定義?我想從我的Oracle模式中提取所有表和其他信息的數據類型。我有大約100張桌子。如何使用SQL或Toad提取表定義

我需要我的Oracle架構的完整文檔。我的模式名稱是「cco」。

我可以通過SQL來做到這一點嗎?

我使用Toad for Data分析器3.3。請讓我知道這個工具是否有幫助。

+0

如果你沒有很多表,你可以使用蟾蜍進行數據分析,以查看的數據類型所有的表格。 您可以從對象資源管理器中完成它,雙擊表名稱,您將在選項卡列中找到有關新windown的必需信息。 – Shann

+0

我有100多張桌子。現在我想提取所有表格信息的文檔目的 – santhosha

+0

@santosha我發佈了查詢來獲取表的數據類型。 – 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; 

您需要調整SQL客戶端才能正確顯示CLOB列的內容。

更多細節(例如關於如何得到其他對象的DDL)可以在手冊中找到:http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_metada.htm