我有一个excel的表格,表格的表头和access里的字段一样,怎么批量查询excel里的数据是否在数据库里存在。
我觉得你直接把excel 导入到access 库里新建一个表。然后直接用sql 查询比较方便,一个sql 就能查出所有的数据
分别将excel和access中的数据读出来,然后做内连接 inner,比较结果表的数量是不是和excel的数据量相同即可。
直接用pandas的read_excel将excel的数据读出来,为data1;再用pyodbc和pandas将access中的数据读出来,为data2;
然后将data1和data2进行关联(注意采用inner),得到结果表ret_data;
最后比较len(data1)和len(ret_data)是否相同。相同就是存在,反之是不存在
望采纳!
和你说下大体的思路和大概的代码,具体还得考虑你自己项目实际的业务逻辑。
这里前提时你的access数据库中表结果 和 excel 表结果是一直的,或者说通过查询显示,保证取到的数据结构是一致的。指什么要保证数据结构一致,是为了方便两个数据集的比较,如果不一致的情况,你需要再写条件来判断比较的内容。
1、获取access数据库表数据
#导入模块
import pypyodbc
import win32com.client
path=r'C:\Users\Administrator\Desktop\test.mdb'# 数据库文件
#获取access表数据
conn = pypyodbc.connect(r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + path + ";Uid=;Pwd=;")
cursor = conn.cursor()
SQL = 'select * from 表名'##
access_data= cursor.execute(SQL):
2、读取excel表数据
import openpyxl #导入包
wb=openpyxl.load_workbook('1234.xlsx')
sheet0=wb.worksheets[0] # 获取表
3、两个数据集之间的对比access_data和sheet0
#循环access数据集
for row in access_data:
#循环excel数据集
for row1 in sheet0.iter_rows():
if(row.字段1==row1[字段1].value ):
print('相同')
else
print('不相同')
大体上来讲,就是以上三个步骤,如果说涉及到多个表的时候,SQL语句可以进行多表连接查询。而具体的业务逻辑(两个数据集)之间的比较,可以再第三项里面进行调整。