2013-06-07 2 views
0

SSIS 패키지를 만들어 CSV 파일에서 SQL 테이블로 데이터를로드합니다. 샘플 CSV 파일 내가 SQL Server 테이블로 데이터를로드 할 필요SSIS : ID에서 값으로 원본 열을 변환하는 방법

EMP_ID,EMP_NAME,DEPT_ID,MANAGER_ID,SALARY 
1801,SCOTT,20,1221,3000 
1802,ALLEN,30,1221,3400 

이지만,로드하는 동안 내가 대신 자신의 ID의의 Department NameManager Name을로드해야합니다. 그래서 난 단지 SQL Server 데이터베이스에서 온 Department NameManager name에 대한

1801,SCOTT,FINANCE,JOHNSON,3000 
1802,ALLEN,HR,JOHNSON,3400 

값에 CSV 소스를 변환해야합니다. 하지만 ID를 텍스트 값으로 쿼리하고 변환하려면 어떻게해야합니까?

저는 SSIS를 처음 사용 했으므로 어떻게해야합니까?

감사 존

답변

1
CREATE PROCEDURE [dbo].[BulkInsert]    
    (   
    -- Declare Parameters here for your CSV file 


    )    
    AS    
    BEGIN    
    SET NOCOUNT ON;    

    declare @query varchar(max)    


    CREATE TABLE #TEMP    
    (   
    [FieldName] [int] NOT NULL ,   
    [FieldName] int NOT NULL,   
    )    


    SET @query = 'BULK INSERT #TEMP FROM ''' + PathOfYourTextFile + ''' WITH (FIELDTERMINATOR = '','',ROWTERMINATOR = ''\n'')'    
    --print @query    
    --return    
    execute(@query)    


    BEGIN TRAN;    

    MERGE TableName AS Target 
    -- Now here you can get the value Department Name and Manager Name by using Target.Id --in the table from where you mant to get the value of the Manager Name    
    USING (SELECT * FROM #TEMP) AS Source    
    ON (Target.YourTableId = Source.YourTextFileFieldId) 
    -- In the above line we are checking if the particular row exists in the table(Table1) then update the Table1 if not then insert the new row in Table-1.   

    WHEN MATCHED THEN    
    UPDATE SET    
    Target.SomeId= Source.SomeId 
    WHEN NOT MATCHED BY TARGET THEN    

    -- Insert statement 

위의 코드는 코드에서 편집 할 수 있습니다이로부터 도움을 취함으로써 당신을 위해 단지 예입니다. Bulk Insert는 CSV 파일을 저장하는 가장 좋은 방법 중 하나입니다. 그래서 이것을 사용하려고하면 .. :)

+0

안녕하십니까,하지만 실제 요구 사항이 다르므로 SSIS 패키지를 사용해야합니다. 나는 더 쉬운 예가 요구 사항을 더 잘 설명하기를 희망했다. 그래서 나는 그 예를 들었다. 어떻게 SSIS 패키지를 사용하여 이것을 달성 할 수 있는지 말해주십시오. 원본 데이터를 처리하는 동안 ID를 데이터베이스의 텍스트 값으로 바꾸고 대상 테이블로 이동해야합니다. –

+0

결국 나는 pakage를 사용하는 것보다 훨씬 쉬운 bulk insert를 사용했다. –

0

데이터 흐름 탭의 SSIS 패키지에서 도구 상자의 LOOKUP 프로세스를 사용하십시오. 테이블을 지정하여 문자열 값을 가져오고 조인에 사용할 열과 ID로 대체 할 열을 가져옵니다.

관련 문제