Как построчно обрабатывать файл в PowerShell в виде потока

Я работаю с некоторыми многогигабайтными текстовыми файлами и хочу провести с ними потоковую обработку с помощью PowerShell. Это просто: анализировать каждую строку и извлекать некоторые данные, а затем сохранять их в базе данных.

К сожалению, get-content | % {something ($ _)} , похоже, сохраняет в памяти весь набор строк на этом этапе конвейера. К тому же это на удивление медленно, ведь на то, чтобы все это прочитать, уходит очень много времени.

Итак, мой вопрос состоит из двух частей:

  1. Как я могу заставить его обрабатывать поток построчно и не хранить все в буфере в памяти? Я бы хотел, чтобы для этой цели не использовалось несколько гигабайт оперативной памяти.
  2. Как заставить его работать быстрее? PowerShell, перебирающий get-content , кажется, в 100 раз медленнее, чем сценарий C #.

Я надеюсь, что я здесь что-то тупо делаю, например, пропустил -LineBufferSize параметр или что-то в этом роде ...

87
задан Peter Mortensen 13 July 2015 в 07:33
поделиться