2012-03-28 5 views
-1

삽입되는 I가 고객 (데이터베이스 AAA)이라고 알려진 테이블과 동일한 구조를 갖는 3 개 필드 데이터는 SSIS

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

I 직원 (DATABASE BBB)에 이들 3 열의 데이터를 넣을

포함 고객으로서.

Cust_salary 부분이 null이 아닌 고객 레코드 만 전송하려고합니다.

이 작업은 SSIS에서만 수행됩니다. Cust_id에 대한 MY 값은 Employee_id에 값을 입력하기 전에 자동으로 &으로 생성되며 Employee 테이블을 삭제해야합니다. 자동 생성 된 ID는 보존되어야합니다.

+0

이것은 [데이터 흐름] (http://msdn.microsoft.com/en-us/library/ms141122.aspx) 작업이며 OLE DB 원본 및 OLE DB 대상이 포함 된 것입니다. 소스에 대한 쿼리는'SELECT * FROM Customer WHERE Cust_Salary IS NOT NULL'입니다. – GarethD

+3

이전 질문에 대한 답을 기억하고있을 것입니다 : http://stackoverflow.com/questions/9799358/sql-query-task-in-ssis 또한 , SQL과 SSIS의 차이점을 이해하십시오. 당신은 SSIS에 대해 많은 질문을하고 있습니다. 그러나 거의 모든 경우에있어 진정한 질문은 SSIS가 아니라 SQL에 관한 것입니다. 이것은 또 다른 경우입니다. – Pondlife

+0

@manoj : ** 당신은 ** SQL을 배우기 시작해야합니다! –

답변

2

대런 데이비스의 대답은 올바른 것 같다,하지만 일부 모호한 이유로 당신이 경우 직원 ID는 또한 ID 열과 Cust_ID를 일치시켜야하며 Employee 테이블에있는 모든 항목이 올바른 고객과 일치한다고 가정하면 데이터베이스 BBB에 대한 연결이 열려있는 SSIS에서 SQL 실행 작업을 사용하여 다음을 실행합니다.

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 필드의 무결성이 유지되고 새 Customers 만 Employee 테이블에 삽입됩니다.

+0

SSIS에서 SQL 실행 작업없이 위의 작업을 수행 할 수 있습니까? –

+0

SSIS에서이 작업을 수행해야하는 이유를 설명 할 수 있습니까? EmployeeID는 Identity 열입니까? – GarethD

+0

그 이유는 SSIS.ya에서이 작업이 필요한 이유를 설명하기 위해서 복잡합니다. Employee_ID는 ID 열입니다. –

2

당신은 무엇을 시도 했습니까?

DB와 OleDBSource 및 OleDBDestination 구성 요소가있는 데이터 흐름 구성 요소에 각각 하나씩 두 개의 연결이 필요합니다.

OleDBSource에서 연결을 선택하고 쿼리를 작성한 다음 녹색 화살표를 OleDBDestination으로 끌 수 있습니다. OleDBDestination 선택 대상 연결 및 테이블을 두 번 클릭하고 매핑을 클릭합니다.

+0

SSIS에서 SQL 실행 작업없이 위의 작업을 수행 할 수 있습니까 –

+0

예, SQL 실행 작업이 필요한 이유가 없습니다. – Diego

+0

SQl 실행 작업이 필요하지 않습니다. –

3

당신은 SQL은 SSIS에서 작업을 실행 만들고 다음을 실행할 수 있습니다해야합니다

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

이 작업을 수행하지 않으면 필드를 랩핑해야합니다. (EmployeeID, EmployeeName, EmployeeSalary)와 같이 괄호 안에 삽입하고 적어도 하나의 테이블 (AAA..Customer 또는 BBB..Employee)의 데이터베이스 이름을 정규화하면 이는 동일한 서버에 있다고 가정합니다. – GarethD

+0

이 작업을 SSIS에만 적용하십시오. –

+2

내 게시물에 명시된대로 SQL Execute Task 개체를 만들어 SSIS에서 작동합니다. Gareth, 나는 당신이 이미 논평하고 변경하기 전에 그것을 발견했습니다.감사합니다 –