Ваша проблема очень распространена в системах хранилищ данных, где массовая загрузка и очистка данных являются основной частью (регулярной) работы, которую необходимо выполнить. Я предлагаю вам поискать ETL (Extract Transform Load), промежуточные таблицы, и вы найдете множество хороших вещей.
В широком ответе на вашу проблему: если вы «загружаете данные в память» для проверки, вы фактически повторно внедряете часть механизма БД в свой собственный код. Теперь это может быть хорошо, если это сделать быстрее и умнее. Например, у вас может быть только небольшой диапазон допустимых дат для вашего экстракта Excel, поэтому вам не нужно присоединяться к таблице, чтобы проверить, что даты находятся в диапазоне. Однако для других данных, таких как внешние ключи и т. Д., Позвольте БД делать то, что у нее хорошо получается.
Использование промежуточной таблицы / базы данных / сервера является распространенным решением, поскольку объемы данных становятся большими. Кстати, позволить пользователям чистить данные в Excel - это действительно хорошая идея, а возможность «случайно» удалить важные данные - действительно плохая идея. Можете ли вы заблокировать ячейки / столбцы, чтобы предотвратить это, и / или ввести некоторую базовую проверку в Excel. Если поле должно быть заполнено и должно быть датой, вы можете проверить это в нескольких строках Excel. Ваши пользователи будут счастливы, так как им не нужно загружать файлы перед обнаружением проблем.