Как избежать дублирования данных SQL при выполнении запросов INSERT без исходной базы данных - PullRequest
0 голосов
/ 12 октября 2018

Я получил 2 массовых данных, вставив данные в базу данных SQL Server с помощью запросов SQL Server из нескольких разных источников (несколько файлов .sdf (база данных SQL CE)) от клиентов.Но у меня есть запросы с более чем 1000 записей с несколькими .sdf файлами.

Когда я выполняю второй файл сценариев SQL-запросов (например, файл данных 2-й .sdf), возникает ошибка повторяющихся данных.

Как защитить данные от повторяющихся записейво время выполнения данных.Я не могу изменить запросы типа join или select вручную, скопировав и вставив более 1000 записей из нескольких таблиц.

Пример данных:

INSERT INTO [Patients] ([PatientGuid],[FirstName],[LastName],[PatientID],[DateOfBirth],[Gender],[Comment],[HighLimit],[LowLimit],[HighLimitNova],[LowLimitNova],[Disabled],[PhysicianGuid],[CF1],[CF2],[CF3],[CF4],[CF5],[ShowLimits],[ShowLimitsNova]) VALUES (
'9192596b-8fbb-4f6f-8412-0082fa2af40d',N'Sonia Isabel',N'Pereira Nunes Santos',N'174269',{ts '1976-01-25 00:00:00.000'},1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
GO

INSERT INTO [Patients] ([PatientGuid],[FirstName],[LastName],[PatientID],[DateOfBirth],[Gender],[Comment],[HighLimit],[LowLimit],[HighLimitNova],[LowLimitNova],[Disabled],[PhysicianGuid],[CF1],[CF2],[CF3],[CF4],[CF5],[ShowLimits],[ShowLimitsNova]) VALUES (
'd3f7fa12-6ba4-4fcb-9847-00b26bbff040',N'Antonio José',N'Maia Machado',N'31145',{ts '1957-03-15 00:00:00.000'},2,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
GO

INSERT INTO [Patients] ([PatientGuid],[FirstName],[LastName],[PatientID],[DateOfBirth],[Gender],[Comment],[HighLimit],[LowLimit],[HighLimitNova],[LowLimitNova],[Disabled],[PhysicianGuid],[CF1],[CF2],[CF3],[CF4],[CF5],[ShowLimits],[ShowLimitsNova]) VALUES (
'f716ea62-0eb6-427e-836d-00e6f82ac01e',N'Hans Rudolf',N'Küng',N'205934',{ts '1944-04-03 00:00:00.000'},2,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
GO

Спасибо

*1016 ST * * * 1017

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Вы можете использовать мою библиотеку SQL Server Compact Bulk Copy, SqlCeBulkCopy, она позволяет игнорировать повторяющиеся ошибки первичного ключа.Он доступен на NuGet.org

0 голосов
/ 12 октября 2018

Выполнять INSERT только если не существует в таблице

IF not exists(select * from [Patients] where [PatienGuid] = '9192596b-8fbb-4f6f-8412-0082fa2af40d')
    INSERT INTO [Patients] ([PatienGuid],[FirstName],[LastName],[PatientID],[DateOfBirth],[Gender],[Comment],[HighLimit],[LowLimit],[HighLimitNova],[LowLimitNova],[Disabled],[PhysicianGuid],[CF1],[CF2],[CF3],[CF4],[CF5],[ShowLimits],[ShowLimitsNova]) 
        VALUES ('9192596b-8fbb-4f6f-8412-0082fa2af40d',N'Sonia Isabel',N'Pereira Nunes Santos',N'174269',{ts '1976-01-25 00:00:00.000'},1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...