将表从 Oracle 转移到 SQL Server 的方法都有哪些

Posted

技术标签:

【中文标题】将表从 Oracle 转移到 SQL Server 的方法都有哪些【英文标题】:What are ways to transfer tables from Oracle to SQL Server将表从 Oracle 转移到 SQL Server 的方法有哪些 【发布时间】:2011-09-20 19:20:39 【问题描述】:

我一直在网上搜索这个问题:

有哪些方法可以每天将数据和表从 Oracle 的 Hyperion 传输到 SQL Server 2000?

我是一家公司的实习生,并试图找出可能的方法来做到这一点。非常感谢任何帮助或指出正确的方向

【问题讨论】:

您将移动多少数据? 让具有 Oracle 读取权限和 SQL Server 写入权限的人在...中键入数据 :) 这个问题有很多“依赖”,但我会尝试列出一些的可能性。 我们计划每天从 Oracle 复制大约 7 个表,每个表大约 4 列到 SQl Server 【参考方案1】:

这在很大程度上取决于具体情况。以下是一些可能的解决方案:

DTS

DTS 与 SQL 2000 打包在一起,专为此类任务而设计。如果编写正确,您的 DTS 包可以具有良好的错误处理能力并且可以重新运行/重复使用。

SSIS

SSIS实际上是与SQL 2005及以上版本打包在一起的,但你可以将它连接到其他数据库。它基本上是一个更好的 DTS 版本。 (从技术上讲,它与 DTS 完全不同,但有很多相同的功能)

链接服务器

从 SQL 2000 起,您应该能够直接连接到您的 Oracle 数据库作为链接服务器。在专业人士专栏中,如果您没有任何其他技术技能(例如 DTS 或 SSIS),这种直接访问可能很容易使用,但要正确进行初始设置可能会很复杂,并且可能存在安全问题/问题。

建立你自己的

根据您使用的其他技术,您可以构建自己的应用程序来执行 ETL(提取/转换/加载,这就是您正在执行的操作)。这可能是在 .NET、Java 等中。在 pro 专栏中,您可以使用您熟悉的东西,但这里有一个很大的缺点,因为大多数低级工作类型已经存在于 DTS/ 等工具中SSIS,为什么要重新发明***?

BCP

您可以简单地将 Oracle 中的数据提取为 .csv 文件(或其他格式),然后使用 SQL Server 的批量复制过程将它们重新导入。这可能很快,但没有太多花里胡哨的东西。如果这是一次性的,只有几张桌子,那么这可能是最简单、最快的方法。

第三方应用程序

那里已经编写了大量的 ETL 应用程序(数据导入、数据从站等)。他们通常会提供向导和一键式解决方案(可能比一键多一些),但它们也会花费一些额外的钱。


编辑:

鉴于您的最新评论,我可能会选择在 SQL 代理中安排为每天运行的 DTS 包。如果出现问题,您可以添加错误处理并让系统发送电子邮件/文本/致电某人(或进行积极的案例报告 - 即,在成功时发送消息,以便有人知道如果他们有问题 不要每天都收到消息。

【讨论】:

感谢汤姆的帖子;它内容丰富。我会研究 DTS,这似乎是最好的选择。【参考方案2】:

在我们公司,我们使用 ADO.Net 来完成相同的任务。 我们为 Oracle 创建了一个源,获取所有数据,然后在 SQL Server 中创建它

【讨论】:

【参考方案3】:

您可以编写 DTS 包来复制数据,并安排它们在 Sql Server 代理中运行。

有关 DTS 包的信息,请参阅 DTS Overview。

这里是创建 DTS 包的教程:Creating DTS Packages With SQL Server 2000

【讨论】:

感谢您的链接,DTS 是一个很有希望的可能性。【参考方案4】:

Oracle Hyperion 是一套产品,在很大程度上与 Oracle 的数据库产品无关。我希望您指的是 Hyperion Financial Management 或 Hyperion Strategic Finance 等产品。这些产品具有可使用 COM Interop 或 Web 服务使用的 API。可以通过分析数据库元数据,创建维度树,然后使用该信息创建代表数据库中的子立方体的选择,从内部多维数据库中提取数据;允许您获取或设置单元格数据。 我不知道您对多维数据库的了解程度如何,但除非知识丰富,否则您可能会发现这项任务非常困难。您还需要掌握特定产品 API。

我的公司专门从事这类活动,我们有这类活动的组件。如果您需要进一步的建议,请在我的博客上给我留言。

danielvaughan.org

干杯, 丹尼尔

【讨论】:

【参考方案5】:

我对 Hyperion 一无所知,但 SQL Server 2000 非常旧,如果版本比 2000 年更新,可能没有驱动程序能够从 Hyperion 中提取数据。您可能需要查看看看是否有办法从 Hyperion 推送数据,而不是将其拉入 SQL Server 2000。我过去做过的一种方法是从最初拥有数据的数据库中创建管道分隔的文本文件并将其放置在处理目录中。我知道 DTS 将处理一个以竖线分隔的文本文件。因此,如果您找不到驱动程序来直接处理这些数据,请考虑是否可以将其推送到文件中然后进行处理。您必须在 Hyperion 上创建文件的作业和 DTS 包作业之间安排时间间隔。但如果你每天只做一次,那可能不是问题。

【讨论】:

以上是关于将表从 Oracle 转移到 SQL Server 的方法都有哪些的主要内容,如果未能解决你的问题,请参考以下文章

将表从 SQL Server 2008 复制到 MS Access 2007

oracle 11g 如何将表从一个表空间移动到另一个表空间

使用kafka将表从Oracle复制到Postgresql不起作用

通过更改所有权oracle将表从一个模式移动到另一个模式?

如何使用 phpMyAdmin 将表从 SERVER 1 上的数据库复制到 SERVER 2 上的另一个数据库?

Sqoop - 使用 Avro 格式将表从 Oracle 导入 Hive 的最佳选择是啥?