Я пытаюсь написать код для пакетного импорта множества строк в базу данных.
В настоящее время я массово копирую необработанные данные (из файла .csv) в промежуточную таблицу, чтобы все это было на стороне базы данных. Это оставляет меня с промежуточной таблицей, полной строк, которые идентифицируют «контакты». Теперь их нужно перенести в другие таблицы базы данных.
Затем я копирую строки из промежуточной таблицы, которых у меня еще нет в таблице контактов, и для тех, которые у меня уже есть, мне нужно обновить столбец с именем «GroupToBeAssignedTo», указывая на более позднюю операцию, которую я будет выполнять.
У меня такое чувство, что я ошибаюсь. Запрос не эффективен, и я ищу совет, как я мог бы сделать это лучше.
update [t1]
set [t1].GroupToBeAssignedTo = [t2].GroupToBeAssignedTo from Contacts [t1]
inner join ContactImportStaging [t2] on [t1].UserID = [t2].UserID AND [t1].EmailAddress = [t2].EmailAddress AND [t2].GUID = @GUID
where not exists
(
select GroupID, ContactID from ContactGroupMapping
where GroupID = [t2].GroupToBeAssignedTo AND ContactID = [t1].ID
)
Может быть, лучше просто импортировать все строки, не проверяя сначала дубликаты, а затем «чистить» данные после этого? Ищете предложения, где я иду не так. Благодаря.
РЕДАКТИРОВАТЬ: Чтобы уточнить, вопрос касается MS SQL.