Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 SSI从表中读取数据,并在另一个表中插入2行_Sql Server_Ssis - Fatal编程技术网

Sql server SSI从表中读取数据,并在另一个表中插入2行

Sql server SSI从表中读取数据,并在另一个表中插入2行,sql-server,ssis,Sql Server,Ssis,我需要从一个源表中读取数据行,并在另一个表中插入不同的行 我已经尝试从表中读取行,使用SSIS中的数据流进行插入工作正常 但基于基于公共ID的源行(拆分源并插入目标中的2行) i、 e一行中的源系统ID和源系统密钥以及另一行中的targetSystemID和目标系统密钥具有相同的commonID,RefID 例如: 源表列和行 RefID SourceSystemID SourceKey TargetSystemID TargetKey CommonID

我需要从一个源表中读取数据行,并在另一个表中插入不同的行

我已经尝试从表中读取行,使用SSIS中的数据流进行插入工作正常

但基于基于公共ID的源行(拆分源并插入目标中的2行)

i、 e一行中的源系统ID和源系统密钥以及另一行中的targetSystemID和目标系统密钥具有相同的commonID,RefID

例如:

源表列和行

RefID      SourceSystemID     SourceKey     TargetSystemID   TargetKey     CommonID   KeyDate
3           1                 9BFG06E8AD      2              001351913001  12345      20-02-2010 
4           1                 8KIJ67ASG9      2              002352014005  45678      20-02-2010 
所需的目标列行

DataID(AutoIncrement)    RefID      SystemID          SystemKey      CommonID    DateCreated(using getdate())
1                        3          1                 9BFG06E8AD     12345       getdate()
2                        3          2                 001351913001   12345       getdate()
3                        4          1                 8KIJ67ASG9     45678       getdate()
4                        4          2                 002352014005   45678       getdate()

有人可以帮忙吗?

您可以在SSIS中使用
UNION ALL

有两种方法可以在SSI中使用
UNION ALL

1。在SSIS中使用SQL查询

将此查询用作源

SELECT Row_Number() over(order by RefId) AS DataID,*
FROM(
     SELECT RefID, SourceSystemID As SystemId, SourceKey, CommonID, GetDate() as CreatedDate
     FROM sample

     Union All

     SELECT RefID, TargetSystemID, TargetKey, CommonID, GetDate() as CreatedDate
     FROM sample
 ) AS T
 Order by RefId,SystemId
 ;
2。使用SSIS包对象

数据流任务中创建两个不同的OLE-DB源

像这样(虽然,它的源代码不同,但不是Excel&CSV,而是放两个
OLE-DB源代码
),并在源代码一和源代码二中只选择所需的列

请参阅SSIS中的使用
Union All


编辑:选中此项以匹配您的答案

您可以在SSI中使用
UNION ALL

有两种方法可以在SSI中使用
UNION ALL

1。在SSIS中使用SQL查询

将此查询用作源

SELECT Row_Number() over(order by RefId) AS DataID,*
FROM(
     SELECT RefID, SourceSystemID As SystemId, SourceKey, CommonID, GetDate() as CreatedDate
     FROM sample

     Union All

     SELECT RefID, TargetSystemID, TargetKey, CommonID, GetDate() as CreatedDate
     FROM sample
 ) AS T
 Order by RefId,SystemId
 ;
2。使用SSIS包对象

数据流任务中创建两个不同的OLE-DB源

像这样(虽然,它的源代码不同,但不是Excel&CSV,而是放两个
OLE-DB源代码
),并在源代码一和源代码二中只选择所需的列

请参阅SSIS中的使用
Union All


编辑:选中此项以匹配您的答案

我建议使用LoadTimeStamp vs DateCreated的列名,以避免出现混淆。此记录在加载时“未创建”。它已经存在于其他地方了。@Dale K:sql Server我建议使用LoadTimeStamp vs DateCreated的列名,以避免以后的混淆。此记录在加载时“未创建”。它已经存在于其他地方。@Dale K:sql Server感谢它的工作,但输出将生成第1行、第2行、第3行和第4行,但如何获得我在上面提到的准确输出?@sivaramanvasu:检查我编辑的小提琴链接!让我知道你错过了什么!感谢它的工作,但是输出是生成为第1行、第2行、第3行和第4行,但是如何获得上面提到的准确输出?@sivaramanvasu:检查我编辑的小提琴链接!让我知道你错过了什么!