我有一个很大的csv文件,其中130M的行包含列(NAME,date)
我想导入/更新到Mongodb而没有任何重复(名称)。
我尝试用pymongo更新:
today = datetime.datetime.utcnow()
s = '.'
for line in open('input.csv', "r"):
remove = line.rstrip()
name = remove.lower()
collection.update({"name": name},{"$set": {"zone_date": today}}, upsert = True)
这很慢,然后我尝试使用--uperfield选项导入importmongo:
mongoimport -d mydatabase -c name --type csv --fields name,zone_date --upsertFields name --file input.csv
但两种方法都很慢。 您是否知道提高更新数据集速度的最佳方法?
答案 0 :(得分:0)
除了批量工作(比如1M行)之外,如果你想使用PyMongo,你可以将最终记录放在一个列表中,并将它们与insert_many一起插入。
records = []
with open('input.csv') as input_file:
for line in input_file:
remove = line.rstrip()
name = remove.lower()
records.append({"name": name, "zone_date": today})
# don't insert until the end
collection.insert_many(records, upsert = True)
这会加快速度。