Handling and parsing large CSV files

if the file can be modified, you should go for a binary format (writing a struct of known size for each record).

That lets you read any record at any position pretty easily (record N is at file seek N x recorSize, starting with first record at index 0) and save a lot of conversion time.