MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 数据库 / 正文

Python 进行 Oracle 与 Mysql 不同数据库类型之间的数据 diff

2024-11-26 19:54 huorong 数据库 5 ℃ 0 评论

分享主题:如何利用Python 进行 Oracle 与 Mysql 不同数据库类型之间的数据 diff


一、适用场景

项目工作中,可能会有 A 类型数据库数据需要迁移到 B 类型的数据库中的需求。例如:假设现有一个数据库的迁移需求,是将 Oracle 数据库里的数据迁移至 Mysql 数据库中。常规的测试方法是人工去抽样检测数据进行 diff,因为数据量太大,人工不可能实现全量数据的肉眼 diff。

因此,为提高数据 diff 的正确性以及测试效率,编写测试脚本进行全量迁移数据的 diff 是十分必要的。以下内容将会着重讲解如何使用 Python 编写脚本来实现 Oracle 与 Mysql 这种不同类型数据库之间数据的 diff。


二、代码实现

1、连接oracle数据库并获取要提取的数据,并输出列表里面嵌入的字典类型的数据

 1#coding=utf-8
 2import cx_Oracle
 3import pymysql
 4
 5
 6def get_oracle():
 7    conn = cx_Oracle.connect('user', '123456', '10.7.51.34:1521/server')
 8    cursor=conn.cursor()
 9
10    sql="SELECT NAME_CODE as id ,INDUSTRY_CODE as certificate_no FROM NAME_20201129 WHERE NAME_ID=1"
11    resList1=cursor.execute(sql).fetchall()
12    # print(resList1)
13    columns=[c[0] for c in cursor.description]
14    # print(columns)
15    lastlist=[]
16    for res in resList1:
17        resluts=dict(zip(columns,res))
18        lastlist.append(resluts)
19    print(lastlist)
20    cursor.close

2、连接mysql数据库并获取要提取的数据,并输出列表里面嵌入的字典类型的数据

 1def get_mysql():
 2    db = pymysql.connect("10.7.36.42", "root", "123456", "test")
 3    cursor = db.cursor()
 4    sql="select id,certificate_no from test.ticket where id=1"
 5    try:
 6        resultList = []
 7        cursor.execute(sql)
 8        result = cursor.fetchall()
 9        columns = cursor.description
10        for val in result:
11            tempDict = {}
12            for cloNum in range(len(columns)):
13                tempDict[str(columns[cloNum][0]).upper()] = str(val[cloNum]).upper()
14            resultList.append(tempDict)
15        print(resultList)
16        return resultList
17    except:
18        print("Error: unable to fetch data")
19    cursor.close()
20    db.close()

3、Oracle 与 Mysql 数据库进行 diff,直接调用上面两个方法即可

1if __name__ == '__main__':
2    get_mysql()
3    get_oracle()

4、执行后的输出结果

1[{'ID': '82', 'CERTIFICATE_NO': '1CS004398439896'}]
2[{'ID': 'CO300006484390', 'CERTIFICATE_NO': 'CON'}]


三、总结

  • 以上代码只是做了一个 diff 的雏形演示,希望能给小伙伴起到抛砖引玉的效果,大家在参考时可以根据自己的需求去做更符合业务场景的 diff 验证。
  • 今天分享的内容实操性比较强,Python 实现代码都是干货,建议动手实操更有助于加深理解哟~

Tags:oracle的数据导出

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言