Команда Shell, чтобы разделить большой файл на 10 меньших файлов - PullRequest
12 голосов
/ 09 ноября 2010

У меня есть файл импорта csv с 33 миллионами строк, которые необходимо импортировать в мою базу данных. Я могу импортировать его с помощью консольного приложения C #, но затем хранимые процедуры, которые запускаются после истечения времени ожидания импорта. Следовательно, я хочу разбить файл на 10 файлов поменьше.

Я мог бы сделать это в C #, но я подозреваю, что есть гораздо лучший подход с использованием утилит оболочки. Я установил Cygwin и могу использовать все распространенные утилиты оболочки Linux. Есть ли небольшая комбинация команд, которые я мог бы использовать, чтобы разделить файл?

Ответы [ 4 ]

23 голосов
/ 09 ноября 2010

Используйте split - например, для разделения файла каждые 3,4 миллиона строк (должно быть 10 файлов):

split -l 3400000

$ man split

10 голосов
/ 19 июля 2012

разделение по строке хорошо, но вы также можете разделить по размеру

создает файлы размером 1 МБ из исходного

split -b 1024k <file_name> 

создает файлы 1 ГБ из исходного

split -b 1024m <file_name>
2 голосов
/ 09 ноября 2010

Версия split в coreutils 8.8 (еще не выпущенная) будет иметь команду

split -n l/10

На данный момент вам нужно указать определенное количество строк в файле

1 голос
/ 06 декабря 2017

Если ваш CSV-файл имеет 500 строк, чтобы разделить две части (250 + 250)

скачайте и установите "Cygwin Terminal"

поставить комментарий "split -l 250 filename.csv"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...