前情提要
笔者目前从事的工作是数据测试工作,工作中经常会比对迁移后两个不同数据库的差异。因为环境隔离的原因,我们会将两个不同数据库的结果下载到
excel
中保存到本地,然后对两个excle
进行比对。但是excle
比对对于我这种excel
小白来说是个比较困难的事,于是为了偷懒(为了高效哈~)我就冒出了能不能用sql
语句操作excel
比对数据的念头!在笔者的搜寻下找到了一个解决办法~
环境信息
| 工具/框架 | 作用 |
|---|---|
python | 编程工具 |
pandas | 数据处理框架,将数据转换为dataframe |
pandasql | 支持使用sql查询 dataframe |
代码
import pandas as pdfrom pandasql import sqldf# 需要提前声明全局变量,SQL 解析是会把全局变量名称当作表名global test_aglobal test_b# 使用 pandas 将 excel 数据转换为 dataframetest_a = pd.read_excel("test_a.xlsx")test_b = pd.read_excel("test_b.xlsx")# 编写 SQL 语句query = """SELECTtest_a.name test_a_name,test_b.name test_b_name,CASE WHEN test_a.name = test_b.nameTHEN '一致' ELSE '不一致' END `name比对结果`,test_a.age test_a_age,test_b.age test_b_age,CASE WHEN test_a.age = test_b.ageTHEN '一致' ELSE '不一致' END `age比对结果`,CASE WHEN test_a.name = test_b.name AND test_a.age = test_b.ageTHEN '数据全部一致' ELSE '数据不一致' END `数据比对结果`FROM test_a left join test_b ON test_a.id = test_b.id"""# 使用 pandasql.sqldf 执行语句生成执行结果sqldf(query).to_excel("res.xlsx",index=False)
执行结果
test_a

test_b

比对结果

文章转载自Limt小龍記,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




