2013-10-24 9 views
9

Kann mir jemand sagen, wie ich meine Tabellendefinitionen mithilfe von SQL extrahiere? Ich möchte die Datentypen aller meiner Tabellen und anderer Informationen aus meinem Oracle-Schema extrahieren. Ich habe ungefähr 100 Tische.Wie kann ich Tabellendefinitionen mithilfe von SQL oder Toad extrahieren?

Ich brauche die komplette Dokumentation meines Oracle Schemas. Mein Schemaname ist "cco".

Kann ich dies mit SQL tun?

Ich benutze Toad für Datenanalytiker 3.3. Bitte lassen Sie mich wissen, ob dieses Tool hilft.

+0

Wenn Sie Sie für Datenanalyst verwenden Kröte nicht viel Tabelle haben könnte den Datentyp anzuzeigen alle Tische. Sie können dies über den Objekt-Explorer tun, doppelklicken Sie auf den Tabellennamen und Sie werden die erforderlichen Informationen über die neue Registerkarte "Windown in" finden. – Shann

+0

Ich habe 100+ Tabellen. Jetzt möchte ich alle Tabelleninformationen für den Dokumentationszweck extrahieren – santhosha

+0

@santosha Ich habe die Abfrage gestellt, um die Datentypen der Tabellen zu erhalten. – Shann

Antwort

5

Sie können versuchen, diese -

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

können Sie die Tabelle verwenden: USER_TAB_COLUMNS

unten Abfrage Beispiel finden

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

Dies ist nur ein Beispiel können Sie auch eine select * mehr Informationen zu erhalten.

Sie auch die Tabelle verwenden können: all_tab_columns

Für ein besseres Display können Sie verwenden:

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

Ich habe ein Stück SQL hinzugefügt, wo Sie das Ergebnis in Ihr Dokument einfügen können. – Shann

6

Um die DDL für alle Tabellen zu erhalten des aktuellen Benutzers können Sie Folgendes verwenden:

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

Sie müssen Ihren SQL-Client anpassen, um den Inhalt einer CLOB-Spalte richtig anzeigen zu können.

Weitere Details (zB darüber, wie die DDL für andere Objekte erhalten) finden Sie im Handbuch zu finden: http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_metada.htm

Verwandte Themen