网站首页 > 技术文章 正文
分享主题:如何利用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 实现代码都是干货,建议动手实操更有助于加深理解哟~
猜你喜欢
- 2024-11-07 Oracle 脏数据名称解析 oracle脏读
- 2024-11-07 【Oracle】源环境 dmp 文件导入不同编码环境解决方案
你 发表评论:
欢迎- 617℃几个Oracle空值处理函数 oracle处理null值的函数
- 610℃Oracle分析函数之Lag和Lead()使用
- 599℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 595℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 591℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 582℃【数据统计分析】详解Oracle分组函数之CUBE
- 572℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 560℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- PageHelper - 最方便的 MyBatis 分页插件
- 面试二:pagehelper是怎么实现分页的,
- MyBatis如何实现分页查询?(mybatis-plus分页查询)
- SpringBoot 各种分页查询方式详解(全网最全)
- 如何在Linux上运行exe文件,怎么用linux运行windows软件
- 快速了解hive(快速了解美国50个州)
- Python 中的 pyodbc 库(pydbclib)
- Linux搭建Weblogic集群(linux weblogic部署项目步骤)
- 「DM专栏」DMDSC共享集群之部署(一)——共享存储配置
- 故障分析 | MySQL 派生表优化(mysql pipe)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)