从链接服务器ORACLE中的MSSQL快速加载数据

问题描述 投票:0回答:1

我在DB MSSQL中具有从链接服务器ORACLE加载数据的过程

在DB MSSQL中有一个表:

  1. table_1包含订单ID列表
  2. table_2包含有关订单的详细信息

在DB MSSQL中,该过程用于将数据更新并将数据加载到table_2中,该过程将运算符IN与CURSOR一起使用,它可以长期工作。table_2包含1-2百万行。

还有其他方法/方法可以使用表_1中的初始数据将数据从ORACLE DBMS快速加载到MSSQL吗?

sql-server oracle linked-server
1个回答
0
投票
听起来好像您想在SQL * Server和Oracle之间同步数据。最好的方法是使用执行此操作的商业产品。我已经在我们的商店中开发了一些例程来执行此操作,但这并不是不重要的。

最简单的方法是,如果您具有递增的UID。在同步结束时,将最大值记录到表中。下次运行同步时,以>唯一值开头。

我尝试避免使用游标,我使用插入/选择。它们更容易编码,运行非常快,并且整体失败。我要每4小时将60万条记录从Oracle复制到SQL Server。

下面的示例是T

SQL,并从SQL执行服务器。如果需要从Oracle执行,则可以将相同的代码轻松转换为PL / SQL。我都做过这两种方式。

    @ last_loaded-跟踪已加载到数据库中的最高ID
  • tracker_table-用于存储上次加载的值的表。
  • load_type = 2-跟踪器表可用于跟踪不同负载的ID。
  • oracledb ..-SQL Server链接到Oracle的服务器的名称
  • COPYSCHEMA-包含Oracle表的模式名称。始终指定!
  • COPYTABLE-我们要从中复制的Oracle表的名称

    DECLARE @last_loaded INT;

    SELECT last_loadedINTO @last_loaded来自tracker_tableWHERE load_type ='2';

    INSERT INTO LOAD_TABLE(ID,哥伦比亚,哥伦比亚,COLUMNC)选择ID,专栏,b栏,列c来自oracledb..COPYSCHEMA.COPYTABLEWHERE ID> coalesce(@last_loaded,0);

    SELECT MAX(LAST_LOADED)INTO @last_loaded从LOAD_TABLE;

    UPDATE TRACKER_TABLE组LAST_LOADED = @last_loaded哪里LOAD_TYPE = 2;

© www.soinside.com 2019 - 2024. All rights reserved.