python 比对两个excel表数据_Python第17课:两个数据表如何比对碰撞?(二)

本篇博客主要介绍了如何使用Python进行Excel文件的读取、写入以及将Excel数据导入Oracle数据库,并探讨了Python对比对两个数据表的效率问题。通过Python操作,虽然具有可视化和易于调试的优势,但效率较低,而SQL语句则能在短时间内完成大量数据的比对。

Python第17课:两个数据表如何比对碰撞?(二)

时间 2019-01-30 下午4:00

主讲 刘培富

地点 四楼电教室

一、读取excel的包xlrdimport xlrd

data=xlrd.open_workbook(r'E:\abc.xlsx')

table = data.sheet_by_index(0)#通过索引顺序获取

# table = data.sheet_by_name(u'Sheet1')#通过名称获取,这个不行就用上一个

print(table.cell(1,1).value.strip()) #一定要使用.strip()

总行数:table.nrows

二、写入excel的包xlwtimport xlwt

import datetime

workbook = xlwt.Workbook()

worksheet = workbook.add_sheet('My Sheet')

style = xlwt.XFStyle()

worksheet.write(0, 0, "张三", style)

worksheet.write(0, 1, "李四", style)

workbook.save('E:\\abc.xls')

三、将Excel表导入oracle数据表:import xlrd,cx_Oracle

from time import ctime

print(ctime())

conn=cx_Oracle.connect('lpf/******@//1****/orcl')

cur=conn.cursor()

data=xlrd.open_workbook(r'E:\dian.xlsx')

#table=data.sheet_by_name(u'Sheet1')

table=data.sheet_by_index(0)

wt=""

for i in range(1,table.nrows):

try:

sql="insert into diandong(id,xm,gmsfhm,chepai) values(%d,'%s','%s','%s')"%(i,table.cell(i,10).value.strip(),table.cell(i,9).value.strip(),table.cell(i,1).value.strip())

print(i)

cur.execute(sql)

conn.commit()

except:

wt+=str(i)+","

cur.close()

conn.close()

print("有问题而导入失败的行有:"+wt)

print(ctime())

经过实际操作证实,导入3万条数据,需要3分钟左右。

四、两个数据表比对碰撞:

a319380612fc?from=groupmessage

完成比对1.9亿次,用时28秒。

五、用SQL语句直接比对

以上,是使用python操作数据库,好处是可视、可控,便于调试,便于控制结果输出,不足之处是,由于两次遍历全部数据,导致比对效率低。我们也可以直接使用SQL语句,完成两个表之前对某一列数据的比对。

select * from "LPF"."DIANDONG" where "GMSFHM" in (select GMSFHM from "LPF"."ZAITAO")

同样的数据量,用时仅0.03秒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值