创建 SSIS 包 - 将数据从 Oracle 复制到 SQL Server
Posted
技术标签:
【中文标题】创建 SSIS 包 - 将数据从 Oracle 复制到 SQL Server【英文标题】:Create a SSIS Package - To Copy data from Oracle to SQL Server 【发布时间】:2012-06-12 06:49:05 【问题描述】:我想编写一个 SSIS 包,用于将数据从 oracle 复制到 MS Sql 服务器。而且条件是,通过在 SQL 中选择一个表,可以知道哪些数据必须从 oracle 移动到 SQL。基本上 SQL Server 中的 Table1.Column1 必须从 oracle 填充,如果 SQL Server 中的该表中不存在该值。我们在该表中也有公共列值,以将记录映射到 sql server 和 oracle。所以要做到这一点,我计划在 SSIS 包中做到这一点。
谁能详细解释一下如何为上述场景创建一个 SSIS 包。
提前感谢您的帮助。
【问题讨论】:
你使用的是哪个版本的 ssis? 【参考方案1】:您应该使用 Lookup 来连接 SQL server 和 Oracle 的公共列(相同数据类型),并从 Oracle 中检索在 SQL server 中没有匹配记录的值。
设计
1.使用 SSIS 2005
-
拖动一个 OleDB 源并指向您的 Oracle 数据库并选择表。
拖动查找并选择 SQL Server 连接并指向其表。
在列选项卡中加入公共列并在右侧选择您需要检索的列。
单击配置错误输出并为连接列选择重定向行。
拖动 Oledb 命令并将其连接到查找的错误输出。
6.在Oledb命令中写一个insert语句
2.如果您使用的是 SSIS 2008,则无需在查找中配置错误输出。只需将不匹配输出从查找拖到 SQL Server 目标。
【讨论】:
您不需要 OleDbcommnad,您可以使用 oledbdestination。我认为它更容易更快 嗨,Praveen,非常感谢你,它按我的预期工作,它真的帮助了我。我面临的一个问题是,当我从 sql server 和 oracle 映射列时进行查找。其中一列具有不同的数据类型,因此它没有列出必须映射的名为“ID”的列,但我们在 SQL Server 中将 ID 设为 int,而 Oracle 中“ID”的映射列在 varchar 中。那么我该如何映射它。 另外我想澄清一下查找功能是否会像这样工作,当我们第一次运行它时,它会将所有数据从 oracle 带到 sql,因为 sql 中没有数据。第二次运行它时,从 oracle 中只需要带上 sql 中不存在的数据。这就是查找字段的工作方式。请确认。谢谢。 您在 sql 和 oracle 中的列使用什么数据类型?如果数据类型不匹配,那么您可以使用数据转换转换将 oracle 数据类型转换为 sql server 数据类型 关于查找功能,当 sql server 中没有数据并且您第一次运行它时,来自 oracle 的所有数据将是插入到 sql server 中,因为 2 个表之间没有匹配的数据 @BadriPrasad:当你第二次运行它时,它只会插入数据如果它不存在于 sql server 中。【参考方案2】:我建议this 实施。
我使用了 praveen 的解决方案,但有时它可能不是最好的。特别是当目标上的记录增加时的数量。此外,它不处理“更新”
【讨论】:
您好,感谢您的回答。我想知道以下是否可行,如果可以,请详细解释。谢谢。在 SQL 中,我们有 Table1,其中包含许多 Oracle 服务器连接详细信息。我们要做的是,我们需要将数据从 Oracle.Table5 复制到 SQl.Table5。条件在 SQL.Table5 中,我知道工厂名称,使用工厂名称我可以在 SQL.Table1 中获取 Oracle 服务器详细信息。所以使用这个细节我需要连接到 oracle 并获取匹配的数据,然后在 Sql.Table5 中更新。这在 SSIS 包中可行吗? @Diego 我浏览了 Andy 的博客。这是将数据加载到 sql server 的最佳实现。他的附加拆分转换与我发布的解决方案有所不同。我可以使用临时表来使用 Oledb 目的地填充更新的数据,然后在控制流中使用执行 sql 任务将其加载到目标表中。这样我可以通过避免逐行更新来获得更好的性能(在安迪的博客中使用 Oledb 命令完成)并使用 Execute SQL Task 执行批处理操作以上是关于创建 SSIS 包 - 将数据从 Oracle 复制到 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章
我们可以在 SQL Server 中使用 Attunity oracle 连接部署 SSIS 吗?
从SQL Server代理作业步骤调用时,SSIS包不会运行