【发布时间】:2010-10-08 22:26:08
【问题描述】:
定期将表数据从 SQL Server 移动到 Oracle(在 *nix 上)的最合理方法是什么?
【问题讨论】:
标签: sql-server database oracle
定期将表数据从 SQL Server 移动到 Oracle(在 *nix 上)的最合理方法是什么?
【问题讨论】:
标签: sql-server database oracle
调度:
【讨论】:
您可以通过 SSIS(或 2k 的 DTS)直接与 Oracle 建立 SQL Server 接口。它将提供 ETL 功能,并且可以定期安排。
【讨论】:
使用 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 代理作业来安排它。
【讨论】:
我成功地在 SQL Server 端创建了与 Oracle 的链接服务器(我认为是在企业管理器中)。然后我可以在两边使用普通的存储过程来完成更小的数据移动和双向更新。这种方法可以绕过在数据库之外尝试将某些东西放在一起的需要。
尽管尝试在 SQL Server 端使用最新的可能的 Oracle 客户端。我记得 10.2.0.2 客户端中存在一些缺陷,并且获取 10.2.0.4 客户端需要您的“官方”Oracle 注册或购买号或其他东西。
对于大数据移动(或者甚至是您希望每天或更频繁地进行的移动/更新),绝对要使用 ETL 工具之一。我们的 ETL 流程使用 Informatica,但如果 SSIS 能够满足您的需求,那也很好。
【讨论】:
创建从 Oracle 到 Sql Server 的数据库链接(异构连接)。您可以使用此链接通过简单的 select 语句从 Sql Server 检索数据。如果要调度,可以使用物化视图或 dbms_scheduler。
另一种方法是将数据放在 csv 文件中,您可以使用外部表或 sqlloader 将这些数据加载到 Oracle 数据库中。
【讨论】:
这是我的工作: 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”,然后在要复制表的“目标连接名称”中选择正确的用户 [数据库]。
您还可以在那里更改一些属性。 点击“确定”就可以了。
如果有任何问题,请告诉我。
【讨论】: