如何使用SQL或Toad提取表定义

san*_*sha 12 sql oracle toad

有人可以告诉我如何使用SQL提取我的表定义吗?我想从我的Oracle模式中提取所有表的数据类型和其他信息.我有大约100张桌子.

我需要Oracle Schema的完整文档.我的架构名称是"cco".

我可以通过SQL做到这一点吗?

我正在使用Toad for Data分析师3.3.如果此工具有帮助,请告诉我.

a_h*_*ame 10

要获取当前用户的所有表的DDL,您可以使用:

select dbms_metadata.get_ddl('TABLE', table_name)
from user_tables;
Run Code Online (Sandbox Code Playgroud)

您需要调整SQL客户端才能正确显示CLOB列的内容.

更多详细信息(例如关于如何获取其他对象的DDL)可以在手册中找到:http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_metada.htm


Sha*_*ann 7

你可以使用表格:USER_TAB_COLUMNS

查找以下查询示例

select 
table_name,
column_name,
data_type,
data_length,
data_precision,
nullable
from USER_TAB_COLUMNS 
where table_name = '<table_name>';
Run Code Online (Sandbox Code Playgroud)

这只是一个示例,您也可以执行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>';
Run Code Online (Sandbox Code Playgroud)


小智 6

你可以尝试这个 -

select * from all_tab_cols
where owner = 'CCO';
Run Code Online (Sandbox Code Playgroud)