Sql server SSIS:如何将源列从ID转换为值
我正在创建一个SSIS包,以将数据从CSV文件加载到SQL表。示例CSV文件是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
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