Обычно для таких задач организую отдельную таблицу для импорта данных. Запихиваю туда всё, что пришло извне. Затем обрабатываю в отдельном потоке (нескольких потоках): записываю только нужные данные в основные таблицы. При этом ставлю флаг или сообщение об ошибке у обработанных записей таблицы импорта. Потом проще разобраться, что обработалось, а что нет и почему. И не придётся повторно загружать внешние файлы.
Когда процесс отлажен, ставлю периодическую задачу на подчистку (или архивацию, если нужна будет сверка) старых данных в таблице импорта. Можно запускать в пром.