разбить большой текстовый файл csv на основе значения столбца

У меня есть CSV-файлы с несколькими отсортированными столбцами. Например, у меня могут быть такие строки:

19980102,,PLXS,10032,Q,A,,,15.12500,15.00000,15.12500,2
19980105,,PLXS,10032,Q,A,,,14.93750,14.75000,14.93750,2
19980106,,PLXS,10032,Q,A,,,14.56250,14.56250,14.87500,2
20111222,,PCP,63830,N,A,,,164.07001,164.09000,164.12000,1
20111223,,PCP,63830,N,A,,,164.53000,164.53000,164.55000,1
20111227,,PCP,63830,N,A,,,165.69000,165.61000,165.64000,1

Я хотел бы разделить файл на основе третьего столбца, например. поместите записи PLXS и PCP в свои собственные файлы с именами PLXS.csv и PCP.csv. Поскольку файл предварительно отсортирован, все записи PLXS находятся перед записями PCP и так далее.

Обычно я делаю подобные вещи на C++, так как это язык, который я знаю лучше всего, но в данном случае мой входной CSV-файл занимает несколько гигабайт и слишком велик для загрузки в память в C++.

Кто-нибудь может показать, как это можно сделать? Решения Perl/Python/php/bash — все в порядке, им просто нужно иметь возможность обрабатывать огромный файл без чрезмерного использования памяти.

10
задан Community 22 September 2017 в 17:44
поделиться