как игнорировать повторную вставку строк

PrettyFly_M
Дата: 14.05.2004 17:50:19
проблема в следующем:
1. база на 140 млн записей
2. записи должны быть уникальными, поэтому использую индекс unique
3. загонять данные в нее надо из текстовых файлов
4. единственное, что я нашла для этой цели - команда COPY
5. она вылетает при первой же попытке вставить не уникальную строку
например, в MSSQL есть специальная опция для таких случаев ignore duplicated keys
Подскажите, пожалуйста, есть ли что-нибудь аналогичное для Postgre SQL
или как обойти данную проблему.
Заранее благодарна
Wireless
Дата: 17.05.2004 07:18:39
Ничего подобного здесь нет.
Единственное, могу утешить - в 7.5 вроде как обещают сделать
частичный ROLLBACK - можно будет откатываться до явно указанного
чекпоинта!

while (1)
{
CHECKPOINT A1

prepare_next_insert_data();
INSERT INTO big_table VALUES (...)

if (error == non_unique)
{
ROLLBACK A1;
}

}

Хотя не знаю точно, как это будет реализовано,
может в этой ситуации оно не поможет ;)
Genady
Дата: 17.05.2004 15:28:00
2 PrettyFly_M

Ну я бы честно говоря не стал бы лить командой COPY данные напрямую в рабочую таблицу, а для начала во временную (или промежуточную) со всеми соответствующими проверками и чисткой.