我是SSIS的新手,所以请和我一起袒护。SSIS数据转换
我正试图从一个数据库传输数据到一个新的。我从一张桌子取数据说我取人的名字,然后我插入这个说人表人。这将生成一个personID,我想插入地址表中。应该使用SSIS的方法是什么。有什么建议么。
我是SSIS的新手,所以请和我一起袒护。SSIS数据转换
我正试图从一个数据库传输数据到一个新的。我从一张桌子取数据说我取人的名字,然后我插入这个说人表人。这将生成一个personID,我想插入地址表中。应该使用SSIS的方法是什么。有什么建议么。
我会建议有两个单独的数据流 - 第一个从你的加载你的人表?源表和第二个加载您的地址表与人员ID。
你有几种方法可以到这里。
所以,如果你决定去#2,这里是你将如何去做。
创建两个表来表示你的旧系统。并且新系统:
CREATE TABLE [dbo].[Person](
[ID] [int] IDENTITY(100,1) NOT NULL,
[FirstName] [varchar](50) NULL,
[LastName] [varchar](50) NULL
) ON [PRIMARY];
CREATE TABLE [dbo].[Person_OldSystem](
[ID] [int] IDENTITY(1,1) NOT NULL,
[FirstName] [varchar](50) NULL,
[LastName] [varchar](50) NULL
) ON [PRIMARY];
填写Person表有两个条目:
alt text http://www.freeimagehosting.net/uploads/ff56e32bea.gif
创建一个存储过程来完成的插入和回报新编号:
ALTER PROCEDURE [dbo].[sp_InsertPerson]
@Fname varchar(50),
@Lname varchar(50),
@id integer OUTPUT
AS
BEGIN
INSERT INTO QandA..Person (FirstName, LastName) VALUES (@Fname, @Lname);
SELECT @id = SCOPE_IDENTITY();
END
接下来,我们将设置SSIS包。在此示例包中,添加一个数据流任务。在数据流任务中,添加以下任务并将其连接起来,如图所示。
alt text http://www.freeimagehosting.net/uploads/5348332a9e.gif
注意数据观众有向您展示结果作为我们进步。
设置OLE DB源任务以从Person_OldSystem表中提取所有列。
设置派生列任务添加一个名为“NEWID”
alt text http://www.freeimagehosting.net/uploads/a5c6c9e7c6.gif
设置的OLE DB命令任务具有以下SQL列。
EXEC sp_InsertPerson ?, ?, ? OUTPUT
在OLE DB命令任务的高级属性,设置以下列映射:
alt text http://www.freeimagehosting.net/uploads/2224622431.gif
所以我们已经与数据流做的是从中提取的人名单旧系统。然后,我们添加一个名为NewID的新列,以便在插入新表时插入该行的标识。
alt text http://www.freeimagehosting.net/uploads/8162127377.gif
的OLE DB命令调用我们的存储过程,而不会插入和reutrn新行的ID中的最后一个参数。这个返回的id然后映射到我们为之准备的数据流中的列。
alt text http://www.freeimagehosting.net/uploads/97dbfba277.gif
条件性拆分是那里给数据流的地方去。
创建另一个控制流任务和数据流部分,取源表,你作为人表说,PERSONID并插入到目标表这是地址表
你会如何建议将ID从第一个表中取出? – 2016-09-26 06:52:56
这一切都取决于你的具体情况。这里有几个可能的原因:
你有业务键(例如人的名字 - 任何一个唯一标识一个人记录)加载地址表时,可用的人吗?如果是,则使用它在Person表上执行查找。
或者您是否正在寻找一种方法为新创建的人员创建新的地址记录?在这种情况下,理想情况是您的人员表中有一个创建日期时间字段,该字段在人员插入时将被填充。然后,您可以使用该时间戳检索所有人员ID,例如所有具有创建>地址表创建时间戳记的人员记录。
同样,这一切都依赖于,因此上述可能需要适应您的具体情况。我希望它能让你开始。
你如何建议从第一张插入的表中获取人员ID? – 2016-09-26 06:52:43