Oracle简单易用的表结构导出方法

时间:2022-08-04 00:47:47

最近做项目时需要给客户导出数据库表结构文档,库中表名及列已有注释,可是要输出一份表结构文档要借助第三方工具(如powerdesigner),那有没有更简单的方式呢?当然有,自己做丰衣足食!

附代码(将输出的文本存入x.htm,双击查看就行,至于排版可以拷贝页面到word中搞定):

declare
i integer;
begin
i:=1;
for tbl in(
select
a.table_name,b.comments
from user_tables a,ALL_TAB_COMMENTS b where a.table_name=b.table_name
and b.comments is not null )
loop

    dbms_output.put_line('<br/><h2>'||i||'.'||tbl.comments || '('|| tbl.table_name ||')</h2>');

dbms_output.put_line('<table border=1 bordercolor=black><tr><th>字段名</th><th>数据类型</th><th>长度</th><th>精度</th><th>小数位</th><th>是否为空</th><th>注释</th></tr>');
--列
for col in(
SELECT a.table_name, a.column_name, a.data_type, a.data_length, a.data_precision,
a.data_scale, a.nullable, b.comments
FROM user_tab_columns a,user_col_comments b
where a.TABLE_NAME=b.table_name
and a.COLUMN_NAME=b.column_name and b.table_name = tbl.table_name
--and b.comments is null
)
loop
dbms_output.put_line('<tr><td>'||col.column_name || '</td><td>'||col.data_type || '</td><td>'||col.data_length || ' </td><td>'||col.data_precision || ' </td><td>'||col.data_scale || '</td><td>'||col.nullable || '</td><td>'||col.comments || '</td></tr>');

end loop;

dbms_output.put_line('</table>');

i:=i+1;

end loop;

end;

当然mysql的按上面的思路写一份即可,不过Mysql-front本身也可以导出pdf。