У меня есть несколько 1,5 ГБ CSV-файлов, которые содержат платежную информацию по нескольким учетным записям для клиентов от поставщика услуг.Я пытаюсь разбить большой CSV-файл на более мелкие куски для обработки и форматирования данных внутри него.
Я не хочу развертывать собственный синтаксический анализатор CSV, но это то, чего я еще не видел, поэтому, пожалуйста,поправь меня если я не прав.Файлы объемом 1,5 ГБ содержат информацию в следующем порядке: информация об учетной записи, номер счета, дата выставления счета, транзакции, Ex gst, Inc gst, тип и другие строки.
обратите внимание, что BillDate здесь означает дату, когда счет былсделано, так что иногда у нас есть более двух дат выставления счетов в одном CSV.
Счета сгруппированы по: Номер счета> Дата выставления> Транзакции.
Некоторые счета имеют 10 строк сведений о транзакции,некоторые из них содержат более 300 000 строк сведений о транзакции.Большой 1,5 ГБ CSV-файл содержит около 8 миллионов строк данных (я раньше использовал UltraEdit), чтобы разрезать вставку на более мелкие куски, но это стало очень неэффективным и длительным процессом.
Я просто хочу загрузить большой CSVфайлы в моей WinForm, нажмите кнопку, чтобы разбить эти большие файлы на куски, скажем, не более 250 000 строк, но некоторые счета на самом деле превышают 250 000 строк, и в этом случае они сохраняются в одном куске, а не разделяются по нескольким файлам, так как онив любом случае заказаны.Также я не хочу иметь учетные записи с несколькими датами выставления счетов в CSV, и в этом случае разделитель может создать еще один дополнительный разделитель.
У меня уже есть приложение WinForm, которое автоматически выполняет форматирование CSV в меньшие файлы в VSC # 2010.
Возможно ли на самом деле обрабатывать эти очень большие файлы CSV?Я пытался загрузить большие файлы, но MemoryOutOfException раздражает, так как он каждый раз падает, и я не знаю, как это исправить.Я открыт для предложений.
Вот что я должен делать:
- Загрузить большой CSV-файл (но не удается, поскольку OutOfMemoryException).Как решить эту проблему?
- Сгруппируйте данные по имени учетной записи, дате выставления счета и подсчитайте количество строк для каждой группы.
- Затем создайте массив целых чисел.
- Передайте этот массив целых чисел процессу разделения файлов, который возьмет эти массивы и запишет блоки данных.
Любые предложения будут с благодарностью.
Спасибо.