Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Bulk insert и primary key  [new]
=Сергей=
Member

Откуда:
Сообщений: 329
Добрый день, есть таблица
create table words(
wd1 varchar(50) not null,
wd2 varchar(50) not null,
constraint pk_words primary key clustered( wd1 asc, wd2 asc )
)

В неё необходимо заливать данные через bulk insert, но возникают ошибки вставки дублирующихся значений.
Попытался сделать триггер instead of insert - на insert into работает, а на bulk insert нет.
Как решить проблему?
21 окт 14, 13:57    [16736622]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и primary key  [new]
Glory
Member

Откуда:
Сообщений: 104760
=Сергей=
Как решить проблему?

Какую из двух то ? Дубли ПК или срабатывение триггера ?
21 окт 14, 13:58    [16736632]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и primary key  [new]
=Сергей=
Member

Откуда:
Сообщений: 329
Нужно заливать через bulk insert, но обеспечить целостность PK - не плодить дубли.
21 окт 14, 14:03    [16736685]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и primary key  [new]
Glory
Member

Откуда:
Сообщений: 104760
=Сергей=
Нужно заливать через bulk insert, но обеспечить целостность PK - не плодить дубли.

В смысле - не плодить ? Дубли у вас файле уже есть. Сервер как раз их и не плодит.
21 окт 14, 14:05    [16736696]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и primary key  [new]
aleks2
Guest
create table words(
wd1 varchar(50) not null,
wd2 varchar(50) not null,
constraint pk_words primary key clustered( wd1 asc, wd2 asc ) with(IGNORE_DUP_KEY)
)


Если те тока "не плодить"...
21 окт 14, 14:09    [16736730]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и primary key  [new]
=Сергей=
Member

Откуда:
Сообщений: 329
Нужно, чтоб в БД через bulk insert попадали только отсутствующие записи, а ошибка дубликатов не возникала.
21 окт 14, 14:10    [16736740]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и primary key  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
=Сергей=
[/src]
В неё необходимо заливать данные через bulk insert, но возникают ошибки вставки дублирующихся значений.


Вам необходимо сначала bulk insert в другую буферную таблицу, потом перелить из неё только те данные, которые не являются дубликатами.

CHECK_CONSTRAINTS
Specifies that all constraints on the target table or view must be checked during the bulk-import operation. Without the CHECK_CONSTRAINTS option, any CHECK and FOREIGN KEY constraints are ignored, and after the operation, the constraint on the table is marked as not-trusted.
Note Note
UNIQUE, and PRIMARY KEY constraints are always enforced. When importing into a character column that is defined with a NOT NULL constraint, BULK INSERT inserts a blank string when there is no value in the text file.
21 окт 14, 14:14    [16736771]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и primary key  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
=Сергей=,

вставляйте в промежуточную таблицу, а потом процедурой решайте "только отсутствующие записи"
21 окт 14, 14:19    [16736813]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и primary key  [new]
msLex
Member

Откуда:
Сообщений: 8214
aleks2
with(IGNORE_DUP_KEY)

не буду утверждать, но вроде IGNORE_DUP_KEY "убивает" bulk, превращая его в обычный insert.
21 окт 14, 14:19    [16736817]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и primary key  [new]
aleks2
Guest
msLex
aleks2
with(IGNORE_DUP_KEY)

не буду утверждать, но вроде IGNORE_DUP_KEY "убивает" bulk, превращая его в обычный insert.

Дык, тредстартера Istead of trigger устраивал - нафега ему bulk?
21 окт 14, 14:27    [16736890]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и primary key  [new]
=Сергей=
Member

Откуда:
Сообщений: 329
aleks2
Дык, тредстартера Istead of trigger устраивал - нафега ему bulk?

это в надежде, то он будет срабатывать на bulk insert
21 окт 14, 14:29    [16736910]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и primary key  [new]
msLex
Member

Откуда:
Сообщений: 8214
aleks2
Дык, тредстартера Istead of trigger устраивал - нафега ему bulk?

Тоже верно
=Сергей=
то он будет срабатывать на bulk insert

Срабатывать то он будет, только от вашего bulk insert-а останется только insert, вы же знаете в чем разница и зачем нужен bulk?
21 окт 14, 14:34    [16736940]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить