Из прошлой статьи про чтение огромадного CSV в C# вытекло целое GUI приложение под Windows, предназначенное для распиливания такого файла на более мелкие части, чтобы с ними можно было работать.

Описание

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

Итак, вот оно:

Главное окно приложения hugeCSVsplitter

Работает достаточно просто:

  1. Перетащить исходный CSV файл в область, обозначенную пунктирной линией (либо два раза кликнуть в первое поле ввода и выбрать файл, либо вставить туда путь до файла);
  2. Задать путь, куда будут складываться новые отрезанные CSV файлики (так же два раза ткнув в поле ввода или вставив туда путь). Если поле оставить пустым, то файлы будут складываться в каталог с исходным;
  3. Нажать на кнопку с топором.

По кнопке 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 года тоже запустился нормально из коробки, это конечно уважаемо;
  • лицензия теперь GPLv3 (была MIT), если это кому-то интересно вообще.

Загрузить новую версию можно тут.