У меня есть коллекция, в которую я загрузил содержимое файла xml
объемом 4 ГБ.В нем было около 14000000 записей.
Мне нужно записать эти записи в файл csv
.Я использовал следующий фрагмент кода, думая, что он будет работать нормально, так как объекты читаются / записываются, как и когда они требуются.Однако, похоже, это не так.После запуска кода моя оперативная память сдается.Я использую mongoengine
для использования базовой библиотеки PyMongo для операций с БД.
import csv
from xml_to_db import Users #This is my collection definition in a separate file
extract_user_fields = ['Id', 'Reputation', 'UpVotes', 'DownVotes']
users_file = 'users.csv'
with open(users_file, 'a', newline='') as f:
for user_docs in Users.objects:
user_document_dict = dict()
for key in extract_user_fields:
user_document_dict[key] = user_docs[key]
# for simplicity we will update the csv file as soon as we have a record
# write this document to the csv file
writer = csv.DictWriter(f, extract_user_fields)
writer.writerow(user_document_dict)
В mongoengine
документах нигде не упоминается, что такой запрос БД может привести к проблемам с памятью, если коллекция огромна.
Более того, я не могу точно определить, какая строка ответственна за взрыв памяти.
Любая помощь будет высоко оценена.