Данные для вставки службами SSIS - PullRequest
0 голосов
/ 28 марта 2012

У меня есть таблица, известная как Клиент (DATABASE AAA), содержащая 3 поля

Cust_id Cust_name Cust_salary
1         A        2000
2         B        3000
3         C         NULL

Я хочу поместить данные этих 3 столбцов в Employee (DATABASE BBB), который имеет ту же структуру, что и Customer.

Я хочу передать записи только тех клиентов, у которых часть Cust_salary не равна нулю.

Эта работа должна выполняться только в службах SSIS.Мои значения для Cust_id генерируются автоматически, и до помещения значений в Employee_id таблицу Employee следует удалить. Автоматически сгенерированный идентификатор должен быть сохранен.

Ответы [ 3 ]

3 голосов
/ 28 марта 2012

Вы можете создать задачу выполнения SQL в SSIS и выполнить следующее:

INSERT INTO Employee
 (EmployeeId, EmployeeName, EmployeeSalary)
 SELECT Cust_id, Cust_name, Cust_salary
 FROM Customer
 WHERE Cust_salary IS NOT NULL 
2 голосов
/ 28 марта 2012

Даррен Дэвис ответ кажется правильным, но если по какой-то непонятной причине у вас EmployeeID также является столбцом идентификаторов и должен соответствовать Cust_ID, и, предполагая, что любые записи в таблице Employee соответствуют правильному клиенту, вы можете использовать Execute SQLЗадача в службах SSIS с открытым подключением к базе данных BBB, чтобы выполнить следующее:

SET IDENTITY_INSERT Employee ON

INSERT INTO Employee (EmployeeID, EmployeeName, EmployeeSalary)
SELECT  Cust_ID, Cust_Name, Cust_Salary
FROM    AAA..Customer
WHERE   Cust_Salary IS NOT NULL
AND     NOT EXISTS
        (   SELECT  1
            FROM    Employee
            WHERE   EmployeeID = Cust_ID
        )

SET IDENTITY_INSERT Employee OFF

Это сохранит целостность полей Identity в каждой таблице и добавит только новых клиентов в таблицу Employee.

2 голосов
/ 28 марта 2012

что вы пробовали?

Вам потребуются два соединения, по одному для каждой БД, и один компонент потока данных, который будет иметь внутри компонент OleDBSource и OleDBDestination.

В OleDBSource вы можете выбрать ваше соединение и написать запрос, а затем перетащить зеленую стрелку в OleDBDestination. Дважды щелкните OleDBDestination, выберите целевое соединение и таблицу и нажмите на сопоставление.

Должно быть

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...