SSIS要插入的数据

时间:2012-03-28 10:19:32

标签: sql sql-server sql-server-2008 ssis

我有一个名为Customer(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的MY值是自动生成的&在将值放入Employee_id之前,应删除Employee表。应保留自动生成的标识。

3 个答案:

答案 0 :(得分:3)

您可以在SSIS中创建SQL执行任务并运行以下命令:

INSERT INTO Employee
 (EmployeeId, EmployeeName, EmployeeSalary)
 SELECT Cust_id, Cust_name, Cust_salary
 FROM Customer
 WHERE Cust_salary IS NOT NULL 

答案 1 :(得分:2)

你试过了什么?

您将需要两个连接,一个用于每个DB,一个数据流组件,其中包含OleDBSource和OleDBDestination组件。

在OleDBSource上,您可以选择连接并编写查询,然后将绿色箭头拖到OleDBDestination。双击OleDBDestination选择目标连接和表,然后单击映射。

应该是

答案 2 :(得分:2)

Darren Davies的回答似乎是正确的,但是如果出于某些不明原因,你有一个EmployeeID也是一个标识列,需要匹配Cust_ID,并假设Employee表中已有的任何条目与正确的客户对应,你可以使用一个执行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标识的完整性,并且只将新Customer插入Employee表。