oracle,datagrid,生成数据字典

一、概述

系统快要开发完了,甲方要求验收项目的时候提供数据字典文件,但是我们开发的时候注释直接写在实体的字段上了。我们要求提供的数据字典是word文档。要是一个一个的复制那太麻烦了,于是怎么做呢?

(1) 写个小工具类,把所有实体中的注释提取出来生成一个给表中字段添加注释的sql文件;

(2) 执行sql文件将注释添加到数据库表中;

(3) 采用datagrip或者navicat工具查询出你需要的数据字典项,然后导出为excel文件;

(4) 复制到word;

 

二、步骤

其他步骤略,主要讲解第三步。

1. oracle基表

首先你需要了解一下oracle数据库中的关于表数据列以及列注释的几张基表:

1.获取表:
select table_name from user_tables; //当前用户拥有的表      
select table_name from all_tables; //所有用户的表 
select table_name from dba_tables; //包括系统表
select table_name from dba_tables where owner='用户名'
 
2.获取表字段:
select * from user_tab_columns where Table_Name='用户表';
select * from all_tab_columns where Table_Name='用户表';
select * from dba_tab_columns where Table_Name='用户表';

3.获取表注释:
select * from user_tab_comments
user_tab_comments:table_name,table_type,comments
相应的还有dba_tab_comments,all_tab_comments,这两个比user_tab_comments多了ower列。

4.获取字段注释:
select * from user_col_comments
user_col_comments:table_name,column_name,comments
相应的还有dba_col_comments,all_col_comments,这两个比user_col_comments多了ower列。

我们需要生成数据字典需要用到的信息一般有:字段名、字段类型、字段长度、是否非空、备注等。

于是乎,我们可以用获取字段的基表和获取字段注释的基表进行关联,然后查询出你想要的信息,由于我们自己能够确定自己要生成数据字典的表是位于哪个用户,所以可以使用user_tab_columns和user_col_comments组合获取,而且使用这两个表的数据量相对小一些,效率高一些。

 

2. 获取你需要的数据信息

-- 1.你可以先看下这两个表中都有哪些字段信息
select * from user_tab_columns where TABLE_NAME = 'MEM_LEVEL_TEMP_HISTORY';
select * from user_col_comments where TABLE_NAME = 'MEM_LEVEL_TEMP_HISTORY';

-- 2.核心sql: 可以更具你的需求修改
select
t.COLUMN_NAME as "字段名",
decode(c.COMMENTS, null, ' ', c.COMMENTS) as "含义",
decode(t.DATA_TYPE, 'TIMESTAMP(6)', t.DATA_TYPE, 'NUMBER', (t.DATA_TYPE || '(' || t.DATA_PRECISION || ')'),
    'DATE', t.DATA_TYPE, (t.DATA_TYPE || '(' || t.CHAR_LENGTH || ')')) as "长度",
-- t.DATA_TYPE || '(' || t.CHAR_LENGTH || ')' as "类型(长度)",
--  t.CHAR_LENGTH as "字段长度",
t.NULLABLE AS "是否为空",
' ' as "备注"
from USER_TAB_COLUMNS t join USER_COL_COMMENTS c on c.TABLE_NAME = t.TABLE_NAME and t.COLUMN_NAME = c.COLUMN_NAME
where c.TABLE_NAME = 'MEM_LEVEL_TEMP_HISTORY'  --表名应该大写
order by t.COLUMN_ID
;

执行sql2,查询出你需要的信息。

navicat工具:选择导出结果,然后将查询结果导出为excel文件,然后从excel复制到word;

            或者直接复制查询的结果,然后粘贴到excel表格,然后从excel复制到word;

datagrid工具:修改查询结果的data extractors(数据提取器)的格式为HTML(groovy),如图:

Magicodes 导出数据字典 数据库导出数据字典_Magicodes 导出数据字典

 

 然后复制查询结果,直接粘贴到word。