SQL Synapse,在 CREATE EXTERNAL TABLE 中使用动态/参数化 Azure 容器

Posted

技术标签:

【中文标题】SQL Synapse,在 CREATE EXTERNAL TABLE 中使用动态/参数化 Azure 容器【英文标题】:SQL Synapse, use dynamic/parameterized Azure Container in CREATE EXTERNAL TABLE 【发布时间】:2020-12-24 04:42:46 【问题描述】:

我们有一个场景,源 csv 文件由客户隔离,即每个客户在 Azure 存储中都有一个容器。

在 SQL Synapse 中创建外部表时,是否可以将容器名称作为参数传递,这样 SQL Synapse DB 中没有多个外部数据表?

    CREATE EXTERNAL DATA SOURCE AzureBlobStorage with (  
    TYPE = HADOOP,
    LOCATION ='wasbs://<**container100**>@<accountname>.blob.core.windows.net',  
    CREDENTIAL = AzureStorageCredential  
    ); 

    CREATE EXTERNAL TABLE [dbo].[res1_Data] (  
    [ID] INT,
    [UniqueId] VARCHAR(50),
    [Status] VARCHAR(50) NULL,
    [JoinedDate] DATE
    )  
    WITH (LOCATION='<**container2**>/<folder>/<file>.csv',
    DATA_SOURCE = AzureBlobStorage,  
    FILE_FORMAT = CEFormat  
    ); 

【问题讨论】:

【参考方案1】:

很遗憾,您不能在 DDL 命令中使用变量。但是,您可以构建动态语句,然后使用 sp_executesql 执行此操作。

更多信息here。

【讨论】:

以上是关于SQL Synapse,在 CREATE EXTERNAL TABLE 中使用动态/参数化 Azure 容器的主要内容,如果未能解决你的问题,请参考以下文章

Azure Synapse 专用 sql 池未在 Synapse Studio 中显示数据对象

在 Synapse 管道中编写 SQL 查询查找活动返回错误消息

如何在 Synapse (Azure SQL DW) 上检索视图定义?

Azure Synapse 管道:如何将增量更新从 SQL Server 移动到 Synapse 以处理数字

从 Azure Sql 迁移到 Azure Synapse,无法连接到 Airflow 中的 Synapse

Azure Synapse Sql 池未从 Azure Synapse Studio 数据流接收数据