【发布时间】:2013-12-31 21:45:09
【问题描述】:
我在将巨大的 csv 文件解析为 mysql 数据库时遇到了一些问题。
CSV 文件如下所示:
ref1 data1 data2 data3...
ref1 data4 data5 data6...
ref2 data1 data2 data3 data4 data5..
ref2 data12 data13 data14
ref2 data21 data22...
.
.
.
CSV 文件有大约 100 万行或大约 7MB 的 zip 文件或大约 150MB 的解压缩文件。
我的工作是将数据从 csv 解析到 mysql,但只有引用匹配时的数据/行。另一个问题是,从 csv 中的多行中,我必须在 mysql 中的一行中解析它以供参考。
我尝试在每个引用上使用 csv.reader 和 for 循环来执行此操作,但速度非常慢。
with con:
cur.execute("SELECT ref FROM users")
user=cur.fetchall()
for i in range(len(user)):
with open('hugecsv.csv', mode='rb') as f:
reader = csv.reader(f, delimiter=';')
for row in reader:
if(str(user[i][0])==row[0]):
writer.writerow(row)
所以我的列表用户中有我想要解析的所有引用。哪种解析方式最快?
请帮忙!
【问题讨论】:
-
请澄清“从 csv 中的多行我必须仅在一行中解析它”。