1

这个脚本为 Oracle 转储带有列和注释的表(我所做的:以人类可读的格式转储模式 DDL,而不依赖于任何外部工具,只是sqlplus,我想将此脚本提交给 SVN,以便任何团队成员都可以使用它):

选择 dt.table_name、dt.column_name、dt.data_type、dt.data_length、comm.comments
  FROM user_col_comments comm, user_tab_columns dt
  WHERE dt.table_name = comm.table_name
    AND dt.column_name = comm.column_name
  按 dt.table_name 排序;

输出看起来像:

TBL111 COL11 ...
TBL111 COL22 ...
TBL222 COL11 ...
TBL222 COL22 ...
TBL222 COL33 ...
TBL333 COL11 ...

为了使其更具可读性,我寻找跳过不必要TBLxxx单词的方法:

TBL111 COL11 ...
       COL22 ...
TBL222 COL11 ...
       COL22 ...
       COL33 ...
TBL333 COL11 ...

有什么建议吗?

4

2 回答 2

4

当您使用 SQL*Plus 生成报告时,您可以使用它BREAK ON columnname来抑制查询结果中的重复项。

于 2013-02-21T09:14:06.527 回答
1
SELECT case 
         when row_number() over (partition by dt.table_name order by dt.table_name) = 1 then dt.table_name
         else null
       end as table_name, 
       dt.column_name, 
       dt.data_type, 
       dt.data_length, 
       comm.comments
FROM user_col_comments comm, user_tab_columns dt
WHERE dt.table_name = comm.table_name
  AND dt.column_name = comm.column_name
ORDER BY dt.table_name, dt.column_id;
于 2013-02-21T09:13:50.313 回答