1)之前收到现场比较紧急的需求,要求对比新旧数据库中的表;(笨方法,仅供参考)
2)现状:
a.涉及表的数量288个
b.新旧数据表的名称顺序不一致
c.需要从数据库中获取所有表名;
d.需要输出一份新旧数据库表名和对应备注对应的Excel表
e.具有旧系统的数据库规格说明书
3)操作:
从数据库规格说明书中获取旧系统的数据库表及对应的备注,拷贝进Excel的Sheet(A_table)中的A列;
从新数据库中获取所有的表名信息,数据库是Oracle的,执行的查询语句为:
SELECT '--'||b.comments||'data Count:'|| T.NUM_ROWS||'',T.TABLE_NAME FROM USER_TABLES T,user_tab_comments b where t.TABLE_NAME=b.table_name and T.NUM_ROWS!=0 order by T.NUM_ROWS desc
接着将查询出来的表拷贝进Excel中Sheet(A_table)中的B列.
打开Excel菜单栏上的开发工具,点击代码->Visual Basic(或者宏)
打开编辑器,如图:
将以下代码打入模块1中,点击运行。
Sub 宏1()
'
'对比A列和B列的值,如果B列单元格中的值包含在A列中,则将A列单元格复制到C列
'
For i = 3 To 116
Range("A" & i).Select
For j = 3 To 290
If InStr(Range("A" & i).Value, Range("B" & j).Value) <> 0 Then
Range("A" & i).Select
Selection.Copy
Range("C" & j).Select
ActiveSheet.Paste
Exit For
End If
Next j
Next i
End Sub
历时20多分钟,输出此表格。笨办法,欢迎一起探讨。。。