У меня есть требование, где я должен загрузить файл в БД.
Файл будет иметь около 100 тыс. Записей в день и по одной в месяц от 8 до 10 миллионов записей.
Также необходимо выполнить некоторые проверки на уровне поля.
проверки такие: все поля присутствуют, поле номера содержит действительное число, дата содержит действительную дату, число в указанном диапазоне, соответствует формат строки и т. Д.
Есть 3 способа.
1: Upload to temp and then validate
- Create a temp table (all string columns), have extra error column
- upload all entries to temp table
- run validation, populate error column if needed
- move valid entries to correct table
Минусы: записи должны быть записаны дважды в дБ, даже правильные.
2: Upload to db directly
- upload all entries directly to table
- check which entries are not uploaded
Минусы: нужно читать каждую строку даже после загрузки, так же хорошо, как двойное чтение
3: Validate and then Upload
- read each line, run all validations on all columns
- if valid then write to db
Минусы: чтение файла должно быть медленнее, чем массовая загрузка в БД.
Я пишу приложение на: C # и ASP.NET, БД - это Oracle.
Какой из 3 способов лучше?