А нельзя было в цикле парсить? В конце каждой итерации собирать из составляющих строку с нужными разделителями и добавлять в список, а после цикла сохранить список в файл.
@andrwork а откуда данные берутся? они проверяются перед тем как заносить в БД?
Как вариант конечно отдельный поток который будет собирать данные с рабочих потоков (через те же списки) и заносить их в БД, предварительно производя валидацию)