# 数据库迁移比对小工具
这个专题分享点日常运维中用到的Python脚本
在做数据库迁移后,我们可能需要知道我们的表,索引,存储过程等对象是否迁移成功
这时可以用如下脚本来进行检查
**环境准备**
操作系统: Windows 7及以上
Python版本 :3.5
## 1. 检查源库和目标库的对象
```
select OWNER ||'.'||OBJECT_NAME,OBJECT_TYPE from dba_objects where owner in ('IBIS');
```
[image:26 size:orig]
## 2. 保存源库和目标库信息至文件
将源端的的信息保存在migrate_from.txt文件中
将目标库的信息保存在migrate_to.txt文件中
**注意:最后一行时不要换行**
[image:27 size:orig]
## 3. 脚本内容
```
#coding=utf8
import os
diff1=[]
diff2=[]
migrate_from=open(r"c:\migrate_from.txt")
migrate_to=open(r"c:\migrate_to.txt")
for i in migrate_to:
diff1.append(i.strip().replace('\t',' '))
for k in migrate_from:
diff2.append(k.strip().replace('\t',' '))
print ("未迁移过来的对象\n")
for j in diff2:
if j not in diff1:
print(j+'\n')
print ("迁移后多余的对象\n")
for l in diff1:
if l not in diff2:
print( l+'\n')
migrate_from.close()
migrate_to.close()
```
## 4. 对比结果
使用pycharm运行后:
[image:28 size:orig]
[image:29 size:orig]
注意一些索引和lob段迁移前后名称会不同
这时可以通过查询其主表是否相同来判断是否迁移成功
```
select * from dba_lobs where owner='IBIS';
select * from dba_indexes where owner='IBIS';
```
一般看数量对上就是正确的了,当然多出来点也是行的
这是一个比较简单的脚本,后续带来更多,谢谢支持