Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SSIS:如何将源列从ID转换为值_Sql Server_Ssis - Fatal编程技术网

Sql server SSIS:如何将源列从ID转换为值

Sql server SSIS:如何将源列从ID转换为值,sql-server,ssis,Sql Server,Ssis,我正在创建一个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表中,但在加载时,我需要加载部门名称和经理名称,而不是其ID。所以我需要将CSV源代码转换为 1801,SCOTT,FINANCE,JOHNSON,3000 1802,ALLEN,HR,JOHNSON

我正在创建一个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表中,但在加载时,我需要加载部门名称和经理名称,而不是其ID。所以我需要将CSV源代码转换为

1801,SCOTT,FINANCE,JOHNSON,3000
1802,ALLEN,HR,JOHNSON,3400
部门名称
经理名称
的值仅来自SQL Server数据库。但如何查询ID并将其转换为文本值呢

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

谢谢 约翰


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

从“数据流”选项卡使用工具箱中的查找过程。您将指定从中获取字符串值的表,以及用于联接的列和用于替换ID的列。

您好,谢谢您的回复,但是实际要求不同,我需要使用SSIS包。我希望一个简单的例子能更好地解释这个要求。所以我举了一个例子。请告诉我如何使用SSIS包实现这一点。在处理源数据时,我需要用数据库中的文本值替换ID并移动到目标表。最后,我使用了批量插入,这比使用打包要容易得多
    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