数据库表结构导出word及分析对比工具

数据库静态表结构导出及分析对比工具

背景

随着系统一次次迭代升级,数据库不断更新维护,不同环境数据库表差异性逐渐增多,表结构设计缺陷也逐渐增多; 随着数据量增多,原有正常表,也会成为风险表(主键ID类型问题,索引缺失、无效,备注缺失等问题)。

系统遇到两次数据库问题(一次索引失效,一次任务表ID触达上线)

访问外部系统获取商品列表过长(外部系统没创建索引)

解决这些问题是遇见而不是预见,细思极恐。。。。。

 

数据静态表结构解析对比工具

 

1).生成数据库表结构文档(给懒人使用,不用写数据库文档了)

2).解析数据库表结构设计是否合理(主键是否创建,类型是否合理,索引是否创建,备注是否确实)

3).对应不同数据源表结构差异对比

 

工具代码解读(主要方法介绍)

1) .fills.main.Db2WordMain.java (程序入口)

   Java 原生awt工具,实现数据库表生成word的前端窗口

不做过多描述,见图

注:所有字段必填

 

2) .fills.tools.action.DoDb2WordUtil.java(生成word业务逻辑)

A. DoDb2WordUtil.createDb2Word(String type, List<Map<String, String>> listMap)

/**

 * @Function: DoDb2WordUtil.java

 * @Description: 导出word文档对外暴露接口

 * @param:@param type 业务类型  errorFlag:分析表结构,contrastFlag:对比表结构

 * @param:@param listMap 数据库配置列表信息

 * @return:void

*/

B. DoDb2WordUtil.createDb2Word(Map<String,String> map,Map<String,Map<String,List<String[]>>> mapMapListArrays,boolean checkFlag)

/**

 *

 * @Function: DoDb2WordUtil.java

 * @Description: 导出word文档内部处理接口

 *

 * @param:@param map 数据库配置

 * @param:@param mapMapListArrays 封装需要对比数据集合

 * @param:@param checkFlag  是否分析表结构标识

 * @return:void

*/

C. DoDb2WordUtil.createDbContrast(String org,String cont,String downLoadPath,Map<String,Map<String,List<String[]>>> mapMapListArrays)

 /**

 *

 * @Function: DoDb2WordUtil.java

 * @Description: 导出不同数据源对比差异内部接口

 *

 * @param:@param org  源数据库

 * @param:@param cont 对比数据库

 * @param:@param downLoadPath 存储地址

 * @param:@param mapMapListArrays 封装对比数据源

 * @return:void

*/

D. DoDb2WordUtil.checkOrgAndCont(String org,String cont,Map<String,Map<String,List<String[]>>> mapMapListArrays,List<String[]> listError)

/**

 *

 * @Function: DoDb2WordUtil.java

 * @Description: 不同数据源对比逻辑处理

 *

 * @param:@param org  源数据名称

 * @param:@param cont 对比数据源名称

 * @param:@param mapMapListArrays  封装对比源数据

 * @param:@param listError  封装返回对比差异信息

 * @param:@throws Exception

 * @return:void

*/

E. DoDb2WordUtil.checkTypes(String talbel,String types,String[] orgArrays,String[] contArrays,List<String[]> listError)

/**

 *

 * @Function: DoDb2WordUtil.java

 * @Description: 对比字段具体差异规则

 *

 * @param:@param talbel 对比表名

 * @param:@param types  对比字段

 * @param:@param orgArrays 源字段详情

 * @param:@param contArrays 对比字段详情

 * @param:@param listError  封装返回差异信息列表

 * @return:void

*/

F. DoDb2WordUtil.checkDb(List<String[]> list,List<String[]> tableError,String tableName,String tableNameCn)

/**

 *

 * @Function: DbToWordUtil.java

 * @Description: 分析表结构信息是否合理

 *

 * @param:@param list 表字段列表信息

 * @param:@param tableError 封装返回不合理列表

 * @param:@param tableName  表名

 * @param:@param tableNameCn 表备注信息

 * @return:void

*/

3).fills.tools.other.JdbcConnectionUtil(JDBC链接工具)

A.JdbcConnectionUtil.initConfig(String url,String name,String pass,String driver)

 /**

     *

     * @Function: JdbcConnectionUtil.java

     * @Description: 初始化数据库配置信息

     *

     * @param:@param url 数据库连接

     * @param:@param name 用户名

     * @param:@param pass 用户密码

     * @param:@param driver 数据库驱动

     * @return:void

*/

B. JdbcConnectionUtil.getDbTables()

/**

     *

     * @Function: JdbcConnectionUtil.java

     * @Description: 获取数据库表列表

     *

     * @param:@return

     * @return:List<String[]> 返回数据库列表及对应名称

*/

C.JdbcConnectionUtil.getTableCommont(String tableName)

 /**

     *

     * @Function: JdbcConnectionUtil.java

     * @Description: 获取表备注信息

     *

     * @param:@param tableName 数据库表名

     * @param:@return

     * @return:String 返回表备注信息

*/

D.JdbcConnectionUtil.getTableProperty(String tableName)

  /**

     *

     * @Function: JdbcConnectionUtil.java

     * @Description: 获取表结构信息

     *

     * @param:@param tableName 表名

     * @param:@return

     * @return:List<String[]> 返回表结构信息

*/

4).fills.tools.file.FileCreateWordTableUtil

  1. FileCreateWordTableUtil.createTable(XWPFDocument xdoc,int[] column_widths,String[] FILEDS,List<String[]> list,String tableName,String fintSize)

/**

 *

 * @Function: FileCreateWordTableUtil.java

 * @Description: 生成word表格

 *

 * @param:@param xdoc word文档

 * @param:@param column_widths 列宽

 * @param:@param FILEDS  字段列表内容

 * @param:@param list 生成表格源数据

 * @param:@param tableName 表名

 * @param:@param fintSize 表格内容字体大小

 * @param:@throws Exception

 * @return:void

*/

B.FileCreateWordTableUtil.saveDocument(XWPFDocument document, String savePath)

/**

 *

 * @Function: FileCreateWordTableUtil.java

 * @Description: 创建word文档

 *

 * @param:@param document word文档

 * @param:@param savePath 保存地址

 * @param:@throws Exception

 * @return:void

*/

5) .fills.tools.file.FileUtil(创建文件工具)

A.FileUtil.createFile(String filePath)

/**

     * @Author ysf

     * @Description   创建文件

     * @Param  filePath 创建文件地址

     * @return void

  */

 

工具包

Db2WordTable工具

 

下载加压如下,双击 bat文件即可,需要配置JDK环境,jdk1.8

窗口如小图

源码包

fillsJavaTools

总结

  1. 目前我们研发设计没有数据库文档,通过该工具可以生成数据库文档;不用每次反向操作去看测试环境和生产环境的表结构(痛点是增加维护成本,需要定期更新)
  2. 对数据库静态表结构做了分析 (缺点:目前只是做了简单表结构分析:是否有主键,索引,字段备注,判定主键类型)
  3. 不同环境数据库表结构对比(目前只是对比差异,具体情况需要研发人员排查以哪个环境为准)
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值