Дробление большого CSV файла
Из прошлой статьи про чтение огромадного CSV в C# вытекло целое GUI приложение под Windows, предназначенное для распиливания такого файла на более мелкие части, чтобы с ними можно было работать.
Описание
В общем, я написал приложение, которое разделяет исходный невероятных размеров (несколько гигабайт, скажем) CSV файл на множество более мелких, чтобы с ними можно было работать хоть в Блокноте. Если помните, проблема с CSV в несколько гигабайт заключается в том, что для его чтения потребуется также несколько гигабайт оперативной памяти, что пока ещё является некоторой роскошью.
Итак, вот оно:

Работает достаточно просто:
- Перетащить исходный CSV файл в область, обозначенную пунктирной линией (либо два раза кликнуть в первое поле ввода и выбрать файл, либо вставить туда путь до файла);
- Задать путь, куда будут складываться новые отрезанные CSV файлики (так же два раза ткнув в поле ввода или вставив туда путь). Если поле оставить пустым, то файлы будут складываться в каталог с исходным;
- Нажать на кнопку с топором.
По кнопке F1
появляется окно справки.
Требования
Приложение тестировалось на Windows 8.1, но должно работать в более новых тоже, главное чтобы был установлен .NET Framework 4.5.1.
Настройки
В .config
файле есть некоторые настройки.
linesPerFile
Через сколько строк разрезать. Например, если задать 1000
, то исходный файл будет читаться в буфер до 1000
строки, после чего буфер скинется в новый файл, и с 1001
строки будет заполняться по новой. И так до конца исходного файла.
Если строки достаточно короткие, то можно ставить значение побольше, от 500000
, скажем. Если довольно большие - лучше не ставить больше 100000
.
addHeader
Если поставить True
, то в каждый новый файл первой строкой будет писаться первая строка исходного файла. Такое может понадобиться, если исходный файл содержит “шапку”. По умолчанию выставлено именно True
.
Загрузить
Можете оставлять замечания/предложения в багтрекере или тут в каментах ниже.
Updates
2025-02-07 | Версия 1.1.0
Как оказалось, народ таки пользуется приложением, и накопилось несколько пожеланий/предложений, поэтому я решил немного убраться в проекте и выпустил новую версию.
Что нового:
- так как далеко не у всех ещё UTF-8 (пусть даже и в 2025 году), в конфиг добавлен новый параметр
filesEncoding
для задания кодировки обрабатываемых файлов, а в интерфейсе добавлен выпадающий список с кодировками на выбор. Если в дефолтном списке нет нужной, то можно вписать любую из поддерживаемых в конфиг, и она добавится в список; - не уверен, но кажется в старых версиях была ошибка (хотя никто ничего не репортил), из-за которой при разрезании файла могли теряться строки - это теперь исправлено;
- разрезанные части теперь по умолчанию группируются в новой папке, а не сваливаются как есть;
- если дефолтная папка уже существует, то процесс отменится, чтобы не стереть ничего важного;
- исправил несколько опечаток и ошибок в интерфейсе (английский у меня тогда был похуже);
- вообще-то надо добавить русский язык, но на это я не скоро ещё найду время;
- окно приложения стало побольше размером, а то мелко смотрелось на больших мониторах;
- повышено требование к .NET Framework, теперь нужна версия 4.8 (была 4.5.1)
- протестировал на последних Windows 10 и 11 - работает на обоих;
- кстати, тот старый билд из 2015 года тоже запустился нормально из коробки, это конечно уважаемо;
- протестировал на последних Windows 10 и 11 - работает на обоих;
- лицензия теперь GPLv3 (была MIT), если это кому-то интересно вообще.
Загрузить новую версию можно тут.
Social networks
Zuck: Just ask
Zuck: I have over 4,000 emails, pictures, addresses, SNS
smb: What? How'd you manage that one?
Zuck: People just submitted it.
Zuck: I don't know why.
Zuck: They "trust me"
Zuck: Dumb fucks