比较两个数据库中所有表的所有字段是否一致,检测其中是否有遗漏的表或字段。
因为有300多个表,字段8000多个,一个个比较太费时间,所以采用了稍微简单点的方法。
首先是比对表。
查看所有的表: select * from tab;
把结果导出到excel表格中,然后复制到两个不用的txt文档中。
打开cmd命令。用FC命令比较是否相同。
比较字段
查看表名和字段名: select table_name,column_name from user_tab_columns
将查到的结果按表名排序。
同样,保存并且用FC命令比较。结果发现很多不同的。。。
仔细查看,发现虽然按照的表名排序的,但是同一个表中,列名排序有些是不用的,所以用FC比较的时候就失败了。于是用了另一种办法。把文档中的表名和字段合并成一个字符串,然后排序。python代码如下:
因为有300多个表,字段8000多个,一个个比较太费时间,所以采用了稍微简单点的方法。
首先是比对表。
查看所有的表: select * from tab;
把结果导出到excel表格中,然后复制到两个不用的txt文档中。
打开cmd命令。用FC命令比较是否相同。
比较字段
查看表名和字段名: select table_name,column_name from user_tab_columns
将查到的结果按表名排序。
同样,保存并且用FC命令比较。结果发现很多不同的。。。
仔细查看,发现虽然按照的表名排序的,但是同一个表中,列名排序有些是不用的,所以用FC比较的时候就失败了。于是用了另一种办法。把文档中的表名和字段合并成一个字符串,然后排序。python代码如下:
f
=
open
(
"文件名",
'r'
)
f1
=
open
(
"文件名",
'r'
)
list1
=
[
]
list2
=
[
]
for
line
in
f.
readlines
(
):
list1.
append
(
line
)
list1.
sort
(
)
f2
=
open
(
"文件名",
'w'
)
for
i
in
range
(
0,
len
(
list1
)):
f2.
write
(
list1
[
i
])
for
line1
in
f1.
readlines
(
):
list2.
append
(
line1
)
list2.
sort
(
)
f3
=
open
(
"文件名",
'w'
)
for
i1
in
range
(
0,
len
(
list2
)):
f3.
write
(
list2
[
i1
])
f.
close
(
)
f1.
close
(
)
f2.
close
(
)
f3.
close
(
)
搞定。
搞定。