как быстро добавить множество записей с некоторыми дубликатами в Extensible Storage Engine - PullRequest
0 голосов
/ 10 мая 2011

Мне нужно добавить несколько миллионов записей данных в базу данных ESE. Среди других значений каждая запись имеет уникальное строковое значение. Это значение можно рассматривать как ключ.

Интересно отметить, что во входном наборе может быть несколько одинаковых экземпляров одной и той же записи. После ввода я хочу только одну запись с каждой из уникальных строк.

Мой вопрос: как это сделать - как быстро отфильтровать дубликаты?

Прямо сейчас я добавляю каждую запись только после поиска ключа, если запись уже существует, я пропускаю ее. Если его нет в базе данных, я добавляю запись и прогресс. Большая цена здесь делает поиск по каждой записи.

есть идеи, как сделать это очень быстро? в любом случае, чтобы ввести значение таким образом, что добавление дубликата не удастся?

Ответы [ 2 ]

1 голос
/ 14 мая 2011

Вы можете просто создать уникальный индекс для строкового столбца, передав JET_bitIndexUnique в JetCreateIndex:

JetCreateIndex(sesid, tableid, "myindex", JET_bitIndexUnique, "+string_col\0", 13, 100));

Вставка дублированного значения с ошибкой с JET_errKeyDuplicate.

Этот подход лучше всего подходит, если у вас короткие строки. Если ваши строки длинные, вы должны использовать хеш строки для проверки уникальности.

0 голосов
/ 10 мая 2011

**

DTS.
BULK INSERT.
SSIS.
Choose as you wish

**

...