【问题标题】:Moving Data from SQL Server to Oracle Repeatedly反复将数据从 SQL Server 移动到 Oracle
【发布时间】:2010-10-08 22:26:08
【问题描述】:

定期将表数据从 SQL Server 移动到 Oracle(在 *nix 上)的最合理方法是什么?

【问题讨论】:

    标签: sql-server database oracle


    【解决方案1】:
    • Oracle Heterogeneous Connectivity / Database Gateways 与物化视图、PL/SQL 或 Java 结合使用
    • SSISDTS:两者都可以安排,但需要的不仅仅是对 SQL Server 的只读访问权限
    • Java(可能在 Oracle 中,但也可以在操作系统中)使用 ODBC 或 SQLJ 访问 SQL Server,也可能是 Oracle
    • SQL Server 计划导出到 CSV,Oracle 计划从 CSV 导入
    • 任何其他 ETL 工具(例如 Informatica、Cognos)
    • 任何可以访问这两个数据库的无数语言(但需要维护第三个环境才能在其中运行应用程序)

    调度:

    • 自动/不需要物化视图
    • Oracle DBMS_JOB / DBMS_SCHEDULER
    • 操作系统特定(cron、Windows 计划任务等)
    • 在 SSIS、DTS 或 CSV 导出的情况下,在 SQL Server 中安排

    【讨论】:

      【解决方案2】:

      您可以通过 SSIS(或 2k 的 DTS)直接与 Oracle 建立 SQL Server 接口。它将提供 ETL 功能,并且可以定期安排。

      【讨论】:

        【解决方案3】:

        使用 SQL Server Integration Services (SSIS) 可能是您的最佳选择。如果您不熟悉 SSIS,最好的尝试方法是使用 SQL Server 导出向导并让它为您创建一个 SSIS 包。例如,如果您进入 SQL Server Management Studio 并右键单击您的数据库,然后选择 Tasks->Export Data。从那里单击下一步,直到进入“选择目的地”步骤。选择“Microsoft OLE DB Provider for Oracle”并单击“属性”来定义您的数据库连接。当您单击向导时,在“保存并执行”页面上,确保选中标记为“保存 SSIS 包”的复选框,在下一个屏幕上指定保存 SSIS 包的位置。完成导出向导后,您的数据将被导出,您将拥有一个 SSIS 包,您可以按原样使用,也可以对其进行调整以执行更具体的操作。 获得 SSIS 包后,您可以通过创建 SQL Server 代理作业来安排它。

        【讨论】:

          【解决方案4】:

          我成功地在 SQL Server 端创建了与 Oracle 的链接服务器(我认为是在企业管理器中)。然后我可以在两边使用普通的存储过程来完成更小的数据移动和双向更新。这种方法可以绕过在数据库之外尝试将某些东西放在一起的需要。

          尽管尝试在 SQL Server 端使用最新的可能的 Oracle 客户端。我记得 10.2.0.2 客户端中存在一些缺陷,并且获取 10.2.0.4 客户端需要您的“官方”Oracle 注册或购买号或其他东西。

          对于大数据移动(或者甚至是您希望每天或更频繁地进行的移动/更新),绝对要使用 ETL 工具之一。我们的 ETL 流程使用 Informatica,但如果 SSIS 能够满足您的需求,那也很好。

          【讨论】:

          • 您是指 SQL Server 的企业管理器,而不是 Oracle 的,对吧?
          • 是的,它在 SQL Server 端。我没有摆在我面前的具体细节,但花了一点谷歌搜索才能弄清楚确切的过程。
          【解决方案5】:

          创建从 Oracle 到 Sql Server 的数据库链接(异构连接)。您可以使用此链接通过简单的 select 语句从 Sql Server 检索数据。如果要调度,可以使用物化视图或 dbms_scheduler。

          另一种方法是将数据放在 csv 文件中,您可以使用外部表或 sqlloader 将这些数据加载到 Oracle 数据库中。

          【讨论】:

          • 谢谢;我之前实际上并没有听说过“异构连接”这个词。听起来(至少在 10g 中)它包含透明网关和通用连接代理(ODBC、OLE DB)。
          • 在阅读官方管理指南并看到另一个关于使用物化视图的提及时,它沉没于该解决方案(异构连接 + 物化视图)的出色程度。 +1
          【解决方案6】:

          这是我的工作: Oracle SQL 开发人员使用此链接连接到 SQL Server: https://kentgraziano.com/2013/01/14/tech-tip-connect-to-sql-server-using-oracle-sql-developer/

          添加 SQL jar 后,您将在“连接”窗口中看到 SQL Server 选项卡:

          然后连接到 SQL 实例。

          然后打开 SQL 实例并选择要复制的数据库或表。右键单击任何数据库/表,然后单击那里的“复制到 oracle”,然后在要复制表的“目标连接名称”中选择正确的用户 [数据库]。

          您还可以在那里更改一些属性。 点击“确定”就可以了。

          如果有任何问题,请告诉我。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-11-18
            • 2018-08-01
            • 1970-01-01
            • 2012-10-19
            • 1970-01-01
            • 2019-08-01
            • 1970-01-01
            • 2012-02-20
            相关资源
            最近更新 更多