2012-06-08 49 views
6

我想写一个SSIS包来将数据从oracle复制到MS Sql服务器。并且条件是,通过在SQL中选择一个表,将知道哪些数据必须从oracle迁移到SQL。基本上Table1.Column1在SQL服务器必须从oracle填充如果该值不存在于SQL Server中的表中。我们在该表中也有共同的列值来将记录与sql server和oracle进行映射。所以要做到这一点我已经计划在SSIS包中做到这一点。创建一个SSIS包 - 将数据从Oracle复制到SQL Server

任何人都可以详细解释我如何为上述场景创建一个SSIS包。

非常感谢您的帮助。

+0

您正在使用哪个版本的ssis? – praveen

回答

10

您应该使用Lookup来加入SQL服务器和Oracle的公共列(相同数据类型),并从SQL服务器中没有匹配记录的Oracle中检索值。

设计 Design

1.使用SSIS 2005

  1. 将一个OLEDB源,并指向您的Oracle数据库和选择表。
  2. 拖动查找并选择SQL Server连接并指向其表。
  3. 在列选项卡中,加入公共列并选择需要检索的右侧列。 Lookup
  4. 单击配置错误输出并选择加入列的重定向行。 Lookup
  5. 拖动Oledb命令并将其连接到查找的错误输出。 6.Write在OLEDB命令insert语句 Oledb Oledb

2.如果您正在使用SSIS 2008则无需配置中查找错误输出。只是从查询拖动无匹配输出到SQL Server目的地。

+0

你不需要一个OleDbcommnad,你可以使用一个oledbdestination。我认为这是更容易和更快 – Diego

+0

是的,你是对的。没有OledbCommand – praveen

+0

嗨Praveen,谢谢你非常愚蠢它工作正如我所料,它真的帮助了我。我面对的一个问题是,当我从SQL Server和Oracle中查找Column时,其中一列是不同的数据类型,所以它没有列出名为'ID'的列需要映射,但我们在SQL服务器中使用ID作为int,Oracle中'ID'的映射列使用varchar。所以我怎么能映射它。 –

3

我建议this执行。

我已经使用praveen的解决方案,但有时它可能不是最好的。特别是如果目标上的记录增加,则为数字。此外,它不涉及“更新”

+0

嗨, 感谢您的回答。我想知道以下是否可能,如果有的话请详细解释。谢谢。 在SQL中,我们有Table1,它有许多Oracle服务器连接细节。我们必须做的是,我们需要将数据从Oracle.Table5复制到SQl.Table5。条件是在SQL.Table5我知道工厂名称和使用工厂名称我可以在SQL.Table1中获得Oracle服务器的详细信息。所以使用这个细节我需要连接到oracle并获取匹配的数据,然后在Sql.Table5中更新。 这可能在SSIS包中? –

+0

@Diego我通过Andy的博客。这是将数据加载到sql server的最佳实现。他额外的Split转换与我发布的解决方案有所不同。我可以使用登台表来填充使用Oledb目标的更新数据然后在控制流中使用执行sql任务将其加载到目标表中。通过这种方式,我可以通过避免逐行更新(这是在Andy的博客中使用Oledb命令完成的)并通过执行批处理操作来实现更好的性能SQL任务 – praveen

相关问题