检查两个数据库里的表名、字段是否一致的一种方法
2008-01-13 18:16 金色海洋(jyk) 阅读(5729) 评论(8) 编辑 收藏 举报不知道大家有没有遇到过这种情况。
程序已经给客户安装上了,并且客户已经录入了一些信息,然后程序还需要作比较大的变动(修改功能、增加模块等),数据库就不可避免要做一些改动。
但是这时候已经不能把客户的数据库删掉,换上新的数据库了。只能用添表、添字段的方式了。
如果修改程序的时候做了详细的文档的话,那么就可以按照文档来修改数据库了,但是如果没有文档,或者文档记录的不全,或者修改完成之后想检查一下有没有“漏网之鱼”。那么这时候应该怎么办呢?难道要一个一个的检查?!
我们可以使用两个视图和几个SQL语句来检查一下。
1、建立视图:
这个视图大家不太陌生吧,写过代码生成器的兄弟们都很熟悉吧。
他可以看到一个数据库里的表名、字段名、字段类型、和字段大小的信息。
建立两个这样的视图,一个读取客户的数据库,一个读取新的数据库。这样我们就有了两个数据库的表和字段的信息的列表了。
对了还有一个前提:把新的数据附加到客户的服务器上去。然后才行。
_Sys_Other_TableInfo





_Sys_TableInfo





2、执行查询语句
我们可以使用 not in 的方式来检查表名是否一致。




表一致了之后,我们开始来检查字段名称。



3、下面就是对照字段类型,然后字段的大小。
需要的SQL语句我还没有写出来。估计不是太难吧。
这种方法已经在我的一个项目里试验了一下,基本是正确的。
4、不过还是发现了几个问题。
1、缺少表的话可以使用企业管理器来自动生成键表语句,但是添加字段就有一点麻烦了。不知道大家有没有什么好的办法。
2、不光是检查表,还可以检查视图和存储过程(自定义函数能不能检查到还没有测试)。不过对于视图和存储过程 只能得知名称和字段、参数是否一致,如果参数没有变化,只是修改了一下内容的话就检查不出来了。
3、如果是修改表名或者是修改字段名、删除字段名就没有检查了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!