我有一个sqlite数据库,该数据库有一个表和该表中的4列。它是一个大约60GB的大型sqlite数据库文件。
我有一个单独的较小的csv文件,它只有一列和大约10行。
如何检查较小的csv文件中的值是否也在sqlite数据库中,如果找到该行,则返回该行?
这是一些示例代码,但我仍然坚持如何将csv文件中的值与sqlite数据库的第2列中的值进行比较。
conn = sqlite3.connect( 'database.db')
c = conn.cursor()
conn.commit()
c.execute(""" SELECT name, number,zip
from table """)
query = c.fetchall()
with open('smaller.csv','r') as smallerfile:
with open('output','w') as output:
reader = csv.reader(smallerfile)
writer = csv.writer(output)
答案 0 :(得分:1)
您正以错误的方式来处理这个问题。您需要遍历CSV文件,并对每一行在数据库中进行查询以查找任何匹配的行。
with open('smaller.csv','r') as smallerfile, open('output', 'w') as output:
reader = csv.reader(smallerfile)
writer = csv.writer(output)
for row in reader:
c.execute("SELECT name, number,zip from table WHERE name=?", row[0])
for result in c.fetchall():
writer.writerow(result)