Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как импортировать только новые записи из csv в sql  [new]
aleks.lector
Member

Откуда:
Сообщений: 5
есть база sql вида:

create table test 
( 
test1 varchar(20) not null, 
test2 varchar(50) not null 
) 


и файл csv вида:

test1;test2 
123;абв 
234;бвг 
345;вгд 


импорт происходит таким образом:

bulk 
insert dbo.test 
from 'c:\123.csv' 
with 
( 
fieldterminator = ';', 
rowterminator = '\n', 
firstrow = 2 
) 
go 


файл csv иногда получает новые записи, нужно их импортировать в базу, но чтобы дописывались только новые записи, но вот на каких условиях сделать защиту от дублирования, не могу понять
сильно не пинайте, если вопрос уж слишком глупый, с sql не работал, поэтому и пришел сюда.
2 июл 15, 09:59    [17841650]     Ответить | Цитировать Сообщить модератору
 Re: как импортировать только новые записи из csv в sql  [new]
хе-хе )
Guest
Указать констрейн UNIQUE на поле талбицы
2 июл 15, 10:06    [17841681]     Ответить | Цитировать Сообщить модератору
 Re: как импортировать только новые записи из csv в sql  [new]
aleks.lector
Member

Откуда:
Сообщений: 5
хе-хе ),
получаю
violation of unique key constraint cannot insert duplicate key
2 июл 15, 10:43    [17841840]     Ответить | Цитировать Сообщить модератору
 Re: как импортировать только новые записи из csv в sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
aleks.lector
получаю
violation of unique key constraint cannot insert duplicate key

Ну так это и есть "защита от дублирования". Она не дает добавить в таблицу duplicate key

Сообщение было отредактировано: 2 июл 15, 10:44
2 июл 15, 10:44    [17841845]     Ответить | Цитировать Сообщить модератору
 Re: как импортировать только новые записи из csv в sql  [new]
aleks.lector
Member

Откуда:
Сообщений: 5
Glory,

но и не дописывает новые, так как дальше "The statement has been terminated."
2 июл 15, 10:53    [17841896]     Ответить | Цитировать Сообщить модератору
 Re: как импортировать только новые записи из csv в sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
aleks.lector
но и не дописывает новые, так как дальше "The statement has been terminated."

Разумеется. Все делается так, как документировано.
2 июл 15, 10:54    [17841904]     Ответить | Цитировать Сообщить модератору
 Re: как импортировать только новые записи из csv в sql  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
aleks.lector
Glory,

но и не дописывает новые, так как дальше "The statement has been terminated."


aleks.lector
хе-хе ),
получаю
violation of unique key constraint cannot insert duplicate key


IGNORE_DUP_KEY
2 июл 15, 11:04    [17841964]     Ответить | Цитировать Сообщить модератору
 Re: как импортировать только новые записи из csv в sql  [new]
aleks.lector
Member

Откуда:
Сообщений: 5
Glory
aleks.lector
но и не дописывает новые, так как дальше "The statement has been terminated."

Разумеется. Все делается так, как документировано.

хм. справедливо)) а как выполнить подобную процедуру, но чтобы оно всё таки добавляло в базу строки, которых в ней не было раньше? ещё проблему усложняет, с моим пониманием происходящего, что значения в файле появляются не последней строкой, а в непредсказуемом месте файла. вдруг это критично, не знаю.
2 июл 15, 11:07    [17841990]     Ответить | Цитировать Сообщить модератору
 Re: как импортировать только новые записи из csv в sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
aleks.lector
а как выполнить подобную процедуру, но чтобы оно всё таки добавляло в базу строки, которых в ней не было раньше?

Для того, чтобы что-то добавить, нужно сначала это что-то выбрать
А вы выбираете добавить все
2 июл 15, 11:09    [17842006]     Ответить | Цитировать Сообщить модератору
 Re: как импортировать только новые записи из csv в sql  [new]
aleks.lector
Member

Откуда:
Сообщений: 5
Glory
aleks.lector
а как выполнить подобную процедуру, но чтобы оно всё таки добавляло в базу строки, которых в ней не было раньше?

Для того, чтобы что-то добавить, нужно сначала это что-то выбрать
А вы выбираете добавить все

но выбрать можно что-то из уже существующего в базе. то есть решить можно только создав ещё одну таблицу рядом, и каким-то образом их объединять?
2 июл 15, 12:00    [17842425]     Ответить | Цитировать Сообщить модератору
 Re: как импортировать только новые записи из csv в sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
aleks.lector
но выбрать можно что-то из уже существующего в базе. то есть решить можно только создав ещё одну таблицу рядом, и каким-то образом их объединять?

Бинго !
2 июл 15, 12:04    [17842463]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить