Я бы согласился с вашим решением. Чтение файла по одной строке за один раз позволяет избежать затрат на чтение всего файла в память за один раз, что должно обеспечить быстрое и эффективное выполнение приложения, прежде всего время, необходимое для чтения из файла (что относительно быстро) и анализа строк , Единственное предостережение, которое я должен дать вам, это следить за тем, чтобы в CSV были встроены новые строки. Я не знаю, может ли конкретный формат CSV, который вы используете, действительно выводить символы новой строки между кавычками в данных, но это, конечно, может запутать этот алгоритм.
Кроме того, я бы предложил пакетировать операторы вставки (включая много операторов вставки в одну строку) перед отправкой их в базу данных, если это не создает проблем при получении значений сгенерированного ключа, которые необходимо использовать для последующих внешних ключей (надеюсь вам не нужно извлекать какие-либо сгенерированные значения ключа). Помните, что SQL Server (если это то, что вы используете) может обрабатывать только 2200 параметров на пакет, поэтому ограничьте размер пакета, чтобы учесть это. И я бы рекомендовал использовать параметризованные операторы TSQL для выполнения вставок. Я подозреваю, что больше времени будет потрачено на вставку записей, чем на чтение их из файла.