随着系统开发的不断深入,数据库表也不断增加。目前我开发的一个小型内部管理系统,涉及50多张表。由于已经习惯了使用WORD文档记录表结构(可参见博客点击打开链接中第二节),但是多人开发,文档维护是个非常头疼的事情,而且不能保证在更改了数据库表结构后开发人员一定会及时更新文档。这就牵扯到,开发进入一定阶段,比如进入测试或者一个大的功能点开发结束时,需要及时更新和校验数据库文档。
数据库表结构,属性少则十几个,多则几十个,用肉眼比对非常痛苦。这时我们可以借助POI读取文件的内容,再利用JDBC执行SQL语句,快速验证文档与数据库是否一致。大致思路如下。
1.创建EXCEL文件,checkTableColumns.xls。将需要验证的表属性(英文名称,数据类型)两列粘贴到EXCEL文件的第一个Sheet中。并将Sheet重命名为该校验的数据库表名。
2.利用POI读取EXCEL文件第一个Sheet,获取表名及属性数组。创建SQL查询语句组(每一条属性和数据类型创建一条语句)
SELECT COUNT(*) FROM all_tab_columns WHERE table_name=‘tableName' AND column_name='columnName' AND data_type='dataType'
3.利用JDBC执行SQL语句组,并查询结果。如果该属性和数据类型能够在表中查到返回1,否则返回0。我们需要对累加SQl的执行结果。如果结果与表的数据总数相同,则表示文档与表结果一致,否则,我们需要查看哪一条属性与数据库不符。查询表的属性个数,可以使用如下SQL:
SELECT COUNT(column_name) FROM user_col_comments WHERE table_name='tableName'
按上面思路实现后,需要不断反复粘贴表属性到EXCEL中。其实,我们也可以完全再扩展开来,修改程序读取WORD文档本身,然后进行一次性检查,打印出不符合数据库的属性。