azure 如何使用复制活动将海量数据从oracle数据库复制到Aure blob存储

a2mppw5e  于 2022-12-30  发布在  Oracle
关注(0)|答案(1)|浏览(148)

我是azure的新手,我想使用copy activity将数据从内部oracle数据库复制到azure blob存储。
我已经在使用一个包含SQL查询的单拷贝活动,但该查询返回数百万行,而且拷贝数据需要5个多小时
我看过一些文档建议做增量拷贝。但是我需要遵循什么步骤来实现呢?

vltsax25

vltsax251#

  • 在源Oracle表中选择一个水印列。水印列应该是每当插入新行或更新行时都会增加的列。
  • 创建水印表并存储水印列的最小值。通过执行此操作,所有数据将在第一次运行时移动到目标。
  • 在数据库中编写一个存储过程以更新水位线表的水位线值。存储过程应具有输入参数,并且水位线值应在运行时使用此输入参数进行更新。
CREATE  PROCEDURE usp_update_watermark 
@LastModifiedtime datetime 
AS 
 BEGIN  
 UPDATE watermarktable 
 SET [WatermarkValue] = @LastModifiedtime
  WHERE [TableName] = @TableName 
END
  • 在ADF中执行两个查找活动。
  • 查找活动1是从水位线表中读取值。
  • 查找活动2用于从源表中读取最大水位线值。
  • 复制数据活动将按顺序添加到查找活动1和2中。因此,它将在查找活动1和2之后运行。
  • 在复制数据源设置中编写一个查询,以便在查找活动1水位线值和查找活动2水位线值之间复制数据。
select * from data_source_table where 
LastModifytime > '@{activity('LookupLastWaterMarkActivity').output.firstRow.WatermarkValue}' 
and LastModifytime <= '@{activity('LookupCurrentWaterMarkActivity').output.firstRow.NewWatermarkvalue}'
  • 然后执行存储过程活动,并包含更新水位线表的存储过程。

  • 将查找activity2输出作为参数传递给存储过程。

  • 发布并运行管道。

  • 在第一次运行中,将复制所有数据,并使用新值更新水位线表。

  • 从下次运行开始,将仅从新水位线值复制数据。
    **参考:**Microsoft文档Incrementally copy a table using PowerShell - Azure Data Factory | Microsoft Learn

相关问题