Sono d'accordo con la vostra soluzione. Leggere il file una riga alla volta dovrebbe evitare l'overhead di leggere l'intero file in memoria in una volta, il che dovrebbe rendere l'applicazione eseguita in modo rapido ed efficiente, principalmente prendendo tempo per leggere dal file (che è relativamente veloce) e analizzare le righe . L'unica nota di cautela che ho per te è quella di stare attento se hai nuove linee incorporate nel tuo CSV. Non so se il formato CSV specifico che stai utilizzando potrebbe effettivamente generare righe nuove tra virgolette nei dati, ma questo potrebbe confondere questo algoritmo, ovviamente.
Inoltre, suggerirei il batching delle istruzioni di inserimento (includere molte istruzioni di inserimento in una stringa) prima di inviarle al database se questo non presenta problemi nel recupero dei valori chiave generati che è necessario utilizzare per le chiavi esterne successive (si spera che non sia necessario recuperare alcun valore chiave generato). Tenere presente che SQL Server (se è quello che si sta utilizzando) può gestire solo 2200 parametri per batch, quindi limitare le dimensioni del batch per tenerne conto. E vorrei raccomandare l'uso di istruzioni TSQL parametrizzate per eseguire gli inserti. Sospetto che verrà impiegato più tempo per inserire record anziché leggerli dal file.
Quanto sono rigidi i limiti di tempo? – Jake