数据表迁移数据一致性验证
在迁移数据库的时候做一些必要的验证还是很有用的,比如说迁移前后的数据条数是否一致,数据是否一致,这个时候怎么办呢,验证条数还好说,要是验证数据是否一致呢,对于重要的数据当然要每条都不会有差错,随机抽样验证肯定是不行的,万一遗漏了就麻烦了,而且两张表不再同一台服务器上。这个时候该怎么办呢,有一种方法:
为色尼等地区用户提供了全套网页设计制作服务,及色尼网站建设行业解决方案。主营业务为做网站、成都网站设计、色尼网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
- 从表中选取几个重要字段,比如说A、B、C,用这几个字段作为比对的标尺。
- 从原表中导出每条数据的这三个字段到一个文件f1中。
- 从目的表中到处每条数据的这三个字段到文件f2中。
- 比对文件f1、f2文件中的每条数据是否相同。
- 得出结论
上面这种方法是同时想出来的,也还不错,但我觉得还有改进的余地:
- 首先就是不是所有字段,仍然有可能在非主要字段出现different。
- 整体效率比较低
我的想法是这样:
- 对表中的每n条数据进行拼接(直接连接起来,n取值取决于每条数据的数据量大小)。
- 计算这n条数据的md5值,添加到文件f1中,直到所有数据取值完成。
- 对目的表也一样,记录的文件f2中。
- 比对文件f1、f2文件的md5值,如果一致,ok,成功。
- 如果不一致,从上倒下比对每条md5值,找到第m条不一致。
- 得出结论,不一致的数据在m*(n-1)+1 ~ m*n之间,可以再次选择定位。
第二种方法的好处就是输出文件会在一定范围缩小,比对方便,但是也有缺点,不能像第一种方法一样直接通过关键字段定位不同数据的位置。
下面是第二种方法效果和的具体代码实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
| |