如何使用Azure数据工厂从SQL表中复制数据,为每个表数据创建子文件夹

l0oc07j2  于 2023-03-19  发布在  其他
关注(0)|答案(1)|浏览(102)

假设我有3个表Table1、Table2、Table3。我希望这些表以CSV文件的形式存储在Azure数据湖存储中。我已经完成了这一操作,但它们都在一个文件夹中。如何将它们复制到3个不同的文件夹中,如Table1、Table2、Table3

icnyk63a

icnyk63a1#

如何将它们复制到3个不同的文件夹中,如Table1、Table2、Table3
使用以下方法来实现您的要求。
创建SQL数据库和ADLS的数据集,如下所示。

SQL数据库数据集:

{
    "name": "AzureSqlTable1",
    "properties": {
        "linkedServiceName": {
            "referenceName": "AzureSqlDatabase1",
            "type": "LinkedServiceReference"
        },
        "parameters": {
            "table_name": {
                "type": "string"
            }
        },
        "annotations": [],
        "type": "AzureSqlTable",
        "schema": [],
        "typeProperties": {
            "schema": "dbo",
            "table": {
                "value": "@dataset().table_name",
                "type": "Expression"
            }
        }
    }
}

参数为的ADLS数据集

{
"name": "target_csv_files",
"properties": {
    "linkedServiceName": {
        "referenceName": "AzureDataLakeStorage1",
        "type": "LinkedServiceReference"
    },
    "parameters": {
        "folder_name": {
            "type": "string"
        },
        "table_name": {
            "type": "string"
        }
    },
    "annotations": [],
    "type": "DelimitedText",
    "typeProperties": {
        "location": {
            "type": "AzureBlobFSLocation",
            "fileName": {
                "value": "@dataset().table_name",
                "type": "Expression"
            },
            "folderPath": {
                "value": "@dataset().folder_name",
                "type": "Expression"
            },
            "fileSystem": "data"
        },
        "columnDelimiter": ",",
        "escapeChar": "\\",
        "firstRowAsHeader": true,
        "quoteChar": "\""
    },
    "schema": []
}
}

然后使用SELECT name FROM sys.Tables;脚本创建查找活动以获取表列表。

查找将给予如下输出:

将此数组赋给ForEach,并在ForEach中使用复制活动。如下所示,将动态内容@item().name@concat(item().name,'.csv')赋给复制活动的源和接收器。

资料来源:

Flume:

结果:

相关问题