0

我正在创建一个 SSIS 包以将数据从 CSV 文件加载到 SQL 表。示例 CSV 文件是

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

我需要将数据加载到 SQL Server 表中,但是在加载时我需要加载Department NameManager Name不是他们ID的 s。所以我需要将 CSV 源转换为

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

Department Name和的值Manager name仅来自 SQL Server 数据库。但是如何查询 ID 并将其转换为文本值?

我是 SSIS 的新手,请建议我如何实现这一点。

谢谢约翰

4

2 回答 2

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  

上面的代码只是一个示例,您可以从中获得帮助,您可以在代码中进行编辑。还有一件对您来说更重要的事情,批量插入是保存 CSV 文件的好方法之一。所以尝试使用这个.. :)

于 2013-06-07T12:30:07.730 回答
0

在数据流选项卡的 SSIS 包中,使用工具箱中的 LOOKUP 过程。您将指定要从中获取字符串值的表、用于连接的列以及用于替换您的 ID 的列。

于 2013-06-07T15:12:49.600 回答