У меня есть несколько больших таблиц (миллионы строк). Я постоянно получаю файлы, содержащие новые строки для добавления в эти таблицы — до 50 миллионов строк в день. Около 0,1% строк, которые я получаю, являются дубликатами строк, которые я уже загрузил (или дублируются в файлах). Я хотел бы предотвратить загрузку этих строк в таблицу.
В настоящее время я использую SQLLoader, чтобы иметь достаточную производительность для обработки большого объема данных. Если я сделаю очевидный шаг и добавлю уникальный индекс для столбцов, определяющих, является ли строка дубликатом, SQLLoader начнет сбой всего файла, содержащего повторяющуюся строку, тогда как я хочу только предотвратить загружается сама повторяющаяся строка.
Я знаю, что в SQL Server и Sybase я могу создать уникальный индекс со свойством «Игнорировать дубликаты», и что если я затем использую BCP, повторяющиеся строки (как определено этим индексом) просто не будут загружены.
Есть ли способ добиться такого же эффекта в Oracle?
Я не хочу удалять повторяющиеся строки после их загрузки — для меня важно, чтобы они вообще никогда не загружались.