iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >oracle数据库自动生成数据库表结构文档(亲测有效)
  • 235
分享到

oracle数据库自动生成数据库表结构文档(亲测有效)

摘要

1 2 3 import java.awt.Color; 4 import java.io.FileOutputStream; 5 import java.sql.Connection; 6 import java.

  1  2 
  3 import java.awt.Color;
  4 import java.io.FileOutputStream;
  5 import java.sql.Connection;
  6 import java.sql.DriverManager;
  7 import java.sql.ResultSet;
  8 import java.sql.SQLException;
  9 import java.sql.Statement;
 10 import java.util.ArrayList;
 11 import java.util.HashMap;
 12 import java.util.Iterator;
 13 import java.util.List;
 14 import java.util.Map;
 15 
 16 import com.lowagie.text.*;
 17 import com.lowagie.text.rtf.RtfWriter2;
 18 
 25 public class GenerateTableDoc {
 26     //键类型字典
 27     private static Map keyType = new HashMap();
 28     //需要导出的目标表
 29     private static List targetTable = new ArrayList();
 30     static{
 31         targetTable.add("COMMON_ADDRESS");//表名
 32         targetTable.add("L_USER");
 33     }
 34     //初始化jdbc
 35     static{
 36         try {
 37             keyType.put("ID", "主键");
 38 //            keyType.put("C", "Check");
 39             Class.forName("oracle.jdbc.OracleDriver");
 40         } catch (ClassNotFoundException e) {
 41             e.printStackTrace();
 42         }
 43     }
 44     //private static String url = "";//链接url
 45     private static String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";//链接url
 46     private static String username = "user"; //用户名.需要设置默认表空间哈
 47     private static String passWord = "user"; //密码
 48     private static String schema = "USER"; //目标数据库 49     //查询所有表的sql语句
 50     private static String sql_get_all_tables = "select a.TABLE_NAME,b.COMMENTS from user_tables a,user_tab_comments b WHERE a.TABLE_NAME=b.TABLE_NAME order by TABLE_NAME";    //查询所有字段的sql语句
 51     private static String sql_get_all_columns = "select T1.column_name,T1.data_type,T1.data_length,t2.comments,T1.NULLABLE,(select max(constraint_type)    from user_constraints x left join user_cons_columns y on x.constraint_name=y.constraint_name where x.table_name=t1.TABLE_NAME and y.COLUMN_NAME=T1.column_name)  from user_tab_cols t1, user_col_comments t2, user_tab_comments t3  where t1.TABLE_NAME=t2.table_name(+)  and t1.COLUMN_NAME=t2.column_name(+)  and t1.TABLE_NAME=t3.table_name(+)  and t1.TABLE_NAME="{table_name}" order by T1.COLUMN_ID ";
 52     public static void main(String[] args) throws Exception {
 53         //初始化word文档
 54         Document document = new Document(PageSize.A4);
 55         RtfWriter2.getInstance(document,new FileOutputStream("E:/word.doc"));
 56         document.open();
 57         //查询开始
 58         Connection conn = getConnection();
 59         //获取所有表
 60         List tables = getDataBySQL(sql_get_all_tables,conn);
 61         int i=1;
 62         for (Iterator iterator = tables.iterator(); iterator.hasNext();) {
 63             String [] arr = (String []) iterator.next();
 64             //循环获取字段信息
 65             String tableName = arr[0];
 66             if(targetTable.contains(tableName)){
 67                 System.out.print(i+".正在处理数据表-----------"+arr[0]);
 68                 addTableMetaData(document,arr,i);
 69                 List columns = getDataBySQL(sql_get_all_columns.replace("{table_name}", arr[0]),conn);
 70                 addTableDetail(document,columns);
 71                 addBlank(document);
 72                 System.out.println("...done");
 73                 i++;
 74             }
 75         }
 76         document.close();
 77         conn.close();
 78     }
 79     
 84     public static void addBlank(Document document)throws Exception{
 85         Paragraph ph = new Paragraph("");
 86         ph.setAlignment(Paragraph.ALIGN_LEFT);
 87         document.add(ph);
 88     }
 89     
 96     public static void addTableDetail(Document document,List columns)throws Exception{
 97         Table table = new Table(6);
 98         table.setWidth(100f);
 99         table.setBorderWidth(1);
100         table.setBorderColor(Color.BLACK);
101         table.setPadding(0);
102         table.setSpacing(0);
103         Cell cell1 = new Cell("序号");// 单元格
104         cell1.setHeader(true);
105 
106         Cell cell2 = new Cell("列名");// 单元格
107         cell2.setHeader(true);
108 
109         Cell cell3 = new Cell("类型");// 单元格
110         cell3.setHeader(true);
111 
112         Cell cell4 = new Cell("长度");// 单元格
113         cell4.setHeader(true);
114 
115         Cell cell5 = new Cell("键");// 单元格
116         cell5.setHeader(true);
117 
118         Cell cell6 = new Cell("说明");// 单元格
119         cell6.setHeader(true);
120         //设置表头格式
121         table.setWidths(new float[]{8f,30f,15f,8f,10f,29f});
122         cell1.setHorizontalAlignment(Cell.ALIGN_CENTER);
123         cell1.setBackgroundColor(Color.gray);
124         cell2.setHorizontalAlignment(Cell.ALIGN_CENTER);
125         cell2.setBackgroundColor(Color.gray);
126         cell3.setHorizontalAlignment(Cell.ALIGN_CENTER);
127         cell3.setBackgroundColor(Color.gray);
128         cell4.setHorizontalAlignment(Cell.ALIGN_CENTER);
129         cell4.setBackgroundColor(Color.gray);
130         cell5.setHorizontalAlignment(Cell.ALIGN_CENTER);
131         cell5.setBackgroundColor(Color.gray);
132         cell6.setHorizontalAlignment(Cell.ALIGN_CENTER);
133         cell6.setBackgroundColor(Color.gray);
134         table.addCell(cell1);
135         table.addCell(cell2);
136         table.addCell(cell3);
137         table.addCell(cell4);
138         table.addCell(cell5);
139         table.addCell(cell6);
140         table.endHeaders();// 表头结束
141         int x = 1;
142         for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
143             String [] arr2 = (String []) iterator.next();
144             Cell c1 = new Cell(x+"");
145             Cell c2 = new Cell(arr2[0]);
146             Cell c3 = new Cell(arr2[1]);
147             Cell c4 = new Cell(arr2[2]);
148 
149             String key = keyType.get(arr2[5]);
150             if(key==null)key = "";
151             Cell c5 = new Cell(key);
152             Cell c6 = new Cell(arr2[3]);
153             c1.setHorizontalAlignment(Cell.ALIGN_CENTER);
154             c2.setHorizontalAlignment(Cell.ALIGN_CENTER);
155             c3.setHorizontalAlignment(Cell.ALIGN_CENTER);
156             c4.setHorizontalAlignment(Cell.ALIGN_CENTER);
157             c5.setHorizontalAlignment(Cell.ALIGN_CENTER);
158             c6.setHorizontalAlignment(Cell.ALIGN_CENTER);
159             table.addCell(c1);
160             table.addCell(c2);
161             table.addCell(c3);
162             table.addCell(c4);
163             table.addCell(c5);
164             table.addCell(c6);
165             x++;
166         }
167         document.add(table);
168     }
169     
176     public static void addTableMetaData(Document dcument,String [] arr,int i) throws Exception{
177         Paragraph ph = new Paragraph(i+". 表名: "+arr[0]+"        说明: "+(arr[1]==null?"":arr[1]));
178         ph.setAlignment(Paragraph.ALIGN_LEFT);
179         dcument.add(ph);
180     }
181     
187     public static List getDataBySQL(String sql,Connection conn){
188         Statement stmt = null;
189         ResultSet rs = null;
190         List list = new ArrayList();
191         try {
192             stmt = conn.createStatement();
193             rs = stmt.executeQuery(sql);
194             while(rs.next()){
195                 String [] arr = new String[rs.getMetaData().getColumnCount()];
196                 for(int i=0;i){
197                     arr[i] = rs.getString(i+1);
198                 }
199                 list.add(arr);
200             }
201         } catch (SQLException e) {
202             e.printStackTrace();
203         }finally{
204             try {
205                 if(rs!=null)rs.close();
206                 if(stmt!=null)stmt.close();
207             } catch (SQLException e) {
208                 e.printStackTrace();
209             }
210         }
211         return list;
212     }
213     
217     public static Connection getConnection(){
218         try {
219             return DriverManager.getConnection(url, username, password);
220         } catch (SQLException e) {
221             e.printStackTrace();
222         }
223         return null;
224     }
225 }

 1 ------ 这是相关依赖      
 2         <dependency>
 3             <groupId>com.lowagiegroupId>
 4             <artifactId>itextartifactId>
 5             <version>2.1.7version>
 6         dependency>
 7         <dependency>
 8             <groupId>com.lowagiegroupId>
 9             <artifactId>itext-rtfartifactId>
10             <version>2.1.7version>
11         dependency>

 

 

 

您可能感兴趣的文档:

--结束END--

本文标题: oracle数据库自动生成数据库表结构文档(亲测有效)

本文链接: https://www.lsjlt.com/news/2227.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 用python生成mysql数据库结构文档
    最近因为项目原因需要编写数据库设计文档,但是由于数据表太多,手动编写耗费的时间太久,所以搞了一个简单的脚本快速生成数据库结构,保存到word文档中。 安装pymysql和docume...
    99+
    2024-04-02
  • Gorm + Gen自动生成数据库结构体
    文章目录 安装创建数据表生成model运行效果 使用gorm操作数据库的时候,需要自己来创建用于映射数据表的结构体,比较繁琐。现在gorm官方提供了一个可以自动生成数据库结构体的工具:Gen。 这个工具不仅仅可以用来生成数据...
    99+
    2023-08-16
    mysql go
  • mysql 将数据库中的所有表结构和数据 导入到另一个库(亲测有效)
    一、问题描述 在本地开发一个功能,需要结合具体数据测试代码是否正确,但服务器上的数据不可随便修改。此时则需要将服务器上某个数据库的表批量导入到本地、而后进行测试。将数据库db1中的所有表及数据(如table1、table2),批量导入到另一...
    99+
    2023-12-22
    数据库 mysql oracle
  • 使用java怎么自动生成数据库文档
    今天就跟大家聊聊有关使用java怎么自动生成数据库文档,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、引入pom.xml依赖<dependencies> &n...
    99+
    2023-06-15
  • java如何实现自动生成数据库设计文档
    目录前言实现步骤main方法类全部代码表qrtz_blob_triggers表qrtz_calendars表qrtz_cron_triggers前言 以前我们还需要手写数据库设计文档...
    99+
    2024-04-02
  • 教你怎么用java一键自动生成数据库文档
    目录前言一、引入pom.xml依赖二、创建Java类三、使用 Maven 插件的方式四、总结前言 这是该工具的github地址:https://github.com/pingfang...
    99+
    2024-04-02
  • Oracle数据库中自带的所有表结构是什么
    这篇文章给大家分享的是有关Oracle数据库中自带的所有表结构是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、tb_emp(员工表)1、建表CREATE TABLE "TES...
    99+
    2023-06-25
  • Navicat如何生成更新数据库结构同步的数据库
    小编给大家分享一下Navicat如何生成更新数据库结构同步的数据库,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、打开Navi...
    99+
    2024-04-02
  • java快速生成数据库文档详情
    目录前言环境准备1、导入pom依赖2、数据库连接工具类3、生成数据库文档核心方法前言 在产品发布前夕,经常因为编写各类设计文档感到心碎,倒不是难,而是比较繁琐,举例来说,像编写数据库...
    99+
    2024-04-02
  • oracle怎么导出数据库表结构
    在Oracle数据库中,可以使用以下方法导出数据库表结构: 使用SQL Developer工具导出表结构:在SQL Develo...
    99+
    2024-04-09
    oracle 数据库
  • oracle数据库怎么备份表结构
    要备份 oracle 数据库表的结构,可以使用 create table 语句 همراه با explain 子句。具体步骤包括: 1. 打开 oracle sql*plus; 2....
    99+
    2024-04-18
    oracle
  • oracle数据库如何备份表结构
    如何备份 oracle 数据库表结构?使用 create table 语句创建新副本;使用 expdp 实用程序导出元数据;使用 dbms_metadata 包获取表定义;使用 rman...
    99+
    2024-04-19
    oracle 数据丢失
  • oracle数据库如何查看表结构
    使用以下方法查看 oracle 数据库中表的结构:使用 sql 命令 describe table_name;使用数据库工具(例如 oracle sql developer 或 toad...
    99+
    2024-04-19
    oracle
  • oracle数据库表结构如何导出
    在Oracle数据库中,可以通过以下几种方式导出表结构: 使用SQL Developer工具:在SQL Developer中,选...
    99+
    2024-04-13
    oracle
  • oracle怎么查看数据库表结构
    要查看Oracle数据库中表的结构,可以使用以下方法之一:1. 使用Oracle SQL Developer:Oracle SQL ...
    99+
    2023-08-23
    oracle 数据库
  • oracle数据库怎么查询表结构
    要查询表结构,可以使用以下SQL语句: DESC tablename; 其中,tablename是要查询的表的名称。这条SQL语句...
    99+
    2024-04-22
    oracle
  • Oracle如何导出数据库表结构
    在Oracle数据库中,可以使用以下方法导出数据库表结构: 使用Oracle SQL Developer:可以通过Oracle ...
    99+
    2024-04-09
    Oracle 数据库
  • 如何从Oracle数据库中读取数据自动生成INSERT语句
    小编给大家分享一下如何从Oracle数据库中读取数据自动生成INSERT语句,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Ora...
    99+
    2024-04-02
  • Mybatis如何自动生成数据库表的实体类
    第一步引入jar 第二步,配置文本文件 # 数据库驱动jar 路径 本地创库的包 drive.class.path=C:/Users/Administrator/.m2/re...
    99+
    2024-04-02
  • 详解Oracle数据库中自带的所有表结构(sql代码)
    目录一、tb_emp(员工表)1、建表2、导入数据3、查表二、tb_dept(部门表)1、建表2、导入数据3、查表三、tb_bonus(奖金表)1、建表2、导入数据3、查表四、tb_...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作