问题描述
在我们的情况下,源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
);
解决方法
很遗憾,您不能在 DDL 命令中使用变量。但是,您可以构建动态语句,然后使用 sp_executesql 执行此操作。
更多信息here。