Как одновременно обрабатывать большой текстовый файл в .NET 8?C#

Место общения программистов C#
Ответить
Anonymous
 Как одновременно обрабатывать большой текстовый файл в .NET 8?

Сообщение Anonymous »

У меня есть текстовый файл с сотнями тысяч строк, и каждая строка имеет фиксированный номер. свойств, разделенных вертикальной чертой (|).
Я обработал каждую строку, как показано ниже.
  • Прочитайте строку из файла с помощью StreamReader.ReadLineAsync ().
  • Разделите элементы и поместите их в DTO.
  • Выполните некоторую обработку с помощью DTO.
  • Если шаги пройдены, выполните пару вызовов API AWS S3 для каждой строки/DTO.
  • Если шаги 3 и 4 пройдены, вставьте строку в PostgreSQL. таблица A.
  • Если шаги 3 и 4 не увенчались успехом, вставьте строку в таблицу B PostgreSQL.
Я реализовал описанный выше процесс последовательно, строка за строкой, используя C#, .NET 8 и Dapper (для PostgreSQL 16), успешно и реализовав его как BackgroundService.
Однако, чтобы сократить время выполнения, предлагается ли использовать System.Threading.Channels для обработки строки сразу после ее чтения?И для каждых 100/1000 строк выполняйте оператор массовой вставки/копирования в базу данных.
Есть ли какие-нибудь лучшие рекомендации или подходы?
Изменить: вызовы AWS являются асинхронными, а вызовы PostgreSQL — синхронными. Построчная обработка 52 строк заняла примерно 5 минут. Ограничений на вызовы API AWS S3 нет.


Подробнее здесь: https://stackoverflow.com/questions/790 ... y-in-net-8
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»