Итак, согласно Microsoft docs, преобразование команды OLE DB в SSIS делает это
Преобразование «Команда OLE DB» запускает инструкцию SQL для каждой строки в потоке данных. Например, вы можете запустить оператор SQL, который вставляет, обновляет или удаляет строки в таблице базы данных.
Итак, я хочу написать SQL для вставки строк в одну из моих таблиц только если запись не существует
Итак, я попробовал это, но элементы управления продолжают жаловаться на плохой синтаксис
IF NOT EXISTS
(SELECT * FROM M_Employee_Login WHERE
Column1=?
AND Column2=?
AND Column3=?)
INSERT INTO [M_Employee_Login]
([Column1]
,[Column2]
,[Column3])
VALUES
(?,?,?)
Однако, если я удалю раздел IF NOT EXISTS (оставив только вставку), элементы управления говорят, что код может быть в порядке, что я делаю неправильно.
Есть ли более простое решение?
Обновление: Кстати, мой источник — это плоский файл (CSV-файл).
Обновление после ответа: просто чтобы люди знали. В итоге я использовал OLE DB Command Transformation
, как и планировал, потому что лучше, чем OLE DB Destination
для этой операции. Разница в том, что я использовал Lookup Component
для фильтрации всех уже существующих записей (как предложенный ответ). Затем используйте OLE DB Command Transformation
с Insert SQL
, которые у меня были в вопросе, и это сработало, как и ожидалось. Надеюсь, поможет