【问题标题】:load all databases from the source to ADLG2(azure data lake gen2)将所有数据库从源加载到 ADLG2(azure data lake gen2)
【发布时间】:2022-11-17 16:09:23
【问题描述】:

有没有办法将所有数据库从源 SQL Server 原样加载到数据湖?

我试图用他的表加载每个数据库,但我问是否有一种方法可以加载所有数据库,因为它是数据湖

【问题讨论】:

  • 请分享您尝试过的内容,如果您遇到任何错误,会出现什么错误?您的源数据库是本地的还是 Azure SQL?
  • 请阐明您的具体问题或提供更多详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: sql-server database azure azure-data-lake-gen2


【解决方案1】:

将所有数据库从 SQL 加载到 ADLG2 的方法之一是使用 Azure Data Factory

按照以下过程将所有数据库从 SQL 加载到 ADLG2:

  1. 首先创建一个管道并在其中进行脚本活动添加与主数据库的链接服务选择脚本为 Query 并给出以下查询:
        SELECT name, database_id, create_date  
        FROM sys.databases;
    

    1. 然后获取 ForEach 活动,并将其设置赋予 Items,这样它将获取脚本活动的输出
        @activity('Script1').output.resultSets[0].rows
    

    1. 在每个活动中采取一个lookup活动,为具有动态值的数据库创建和添加链接服务

    在该数据集中添加数据库名称参数

    Noe 将此参数值发送到链接服务属性,如下所示

    查找活动设置

    SELECT table_Schema, TABLE_NAME, TABLE_CATALOG
    FROM information_Schema.tables
    WHERE TABLE_TYPE =  'BASE TABLE'sql
    

    1. 现在执行管道活动点击新的管道创建lookupOP参数与array数据类型并在执行管道中将值传递给它作为查找输出@activity('Lookup1').output.value

    1. 在那个新管道中采用ForEach活动并将我们创建的参数作为项目传递

    1. 因为每个活动都复制一个活动,并且对于源数据集,在 SQL 数据库上使用我们之前创建的动态值创建链接服务

    在此数据集中,为数据库名称、表名称和模式名称创建参数

    现在将这些动态值添加到链接的服务属性和表名、表架构

    复制活动源设置:

    在接收器数据集中创建参数

    现在将这些动态值添加到文件夹名称、文件名

    复制活动接收器设置

    输出

    创建数据库名称的文件夹并在该文件夹中加载该特定数据库的表

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-16
    • 2019-12-02
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    相关资源
    最近更新 更多