У меня есть два файла csv, в которых хранятся идентификаторы и некоторые связанные поля, которые мне нужно сопоставить. В настоящее время в Python 2.4 я загружаю файлы csv в словарь объектов записи с ключом словаря в качестве идентификатора записи. Затем я перехожу через один и сопоставляю ключи в другой и выполняю некоторую обработку.Ссылка на записи CSV в очень больших файлах
Все это хорошо и работает хорошо, но это относительно небольшие файлы csv с около 60 000 записей. Мне скоро придется иметь дело со многими миллионами записей и, возможно, с несколькими файлами csv. Меня беспокоит загрузка памяти с использованием текущего метода.
Первоначально я думал о простой петле в csv-ридере и не беспокоился о том, чтобы загружать их в память вообще, но когда зацикливается хоть несколько миллионов записей для каждого из миллионов записей в других файлах, мы говорим исключительно здесь неэффективный материал.
Итак, любые идеи по хорошему способу сделать это? Я застрял в python 2.4, я не могу изменить файлы csv, и я хотел бы избежать использования sql, если это возможно. Спасибо
Редактировать: Как фигурка в шале Я ищу до 20 200 МБ файлов.
Лучший подход может очень сильно зависеть от количества файлов и размера каждого файла. Можете ли вы поместить некоторые балльные номера в эти параметры? – NPE
Это было бы удобно добавить, извините. Я бы сказал, максимум 200 МБ на файл и, возможно, максимум 20 файлов. Это немного на высокой стороне, но я предпочел бы быть в безопасности, чем сожалеть. Я обновляю главный пост. – Captastic
Я не уверен, что это поможет с размером данных, но я бы создал утилиту импорта CSV, а затем сохранил данные в файлах базы данных SQLite. У вас может быть даже таблица, в которой перечислены пути импорта и данные для дальнейшего использования. Будучи проиндексированным, он может быть более эффективным, чем попытка сохранить всю вещь в памяти или переписать файлы csv. –