You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Azure Synapse SQL查询以将结果写入Azure Blob存储?

实现Azure Synapse SQL查询结果写入Blob存储

要将SQL查询结果写回Azure Blob存储,你可以使用Synapse SQL支持的CETAS(CREATE EXTERNAL TABLE AS SELECT)或COPY INTO语句,以下是具体实现步骤:

前置准备:配置外部依赖(CETAS需要)

如果使用CETAS,需先创建指向Blob存储的外部数据源和对应的文件格式:

-- 创建数据库范围凭据(替换为你的存储账户信息)
CREATE DATABASE SCOPED CREDENTIAL BlobStorageCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '你的SAS令牌'; -- 也可使用存储账户密钥:IDENTITY = '存储账户名', SECRET = '存储账户密钥'

-- 创建外部数据源
CREATE EXTERNAL DATA SOURCE BlobStorageSource
WITH (
    LOCATION = 'https://myblob.blob.core.windows.net/testblob/',
    CREDENTIAL = BlobStorageCredential
);

-- 创建CSV格式的外部文件格式
CREATE EXTERNAL FILE FORMAT CsvFileFormat
WITH (
    FORMAT_TYPE = DELIMITEDTEXT,
    FORMAT_OPTIONS (
        FIELD_TERMINATOR = ',',
        STRING_DELIMITER = '"',
        FIRST_ROW = 2,
        USE_TYPE_DEFAULT = TRUE
    )
);

方法1:使用CETAS写入Blob存储

CETAS会将查询结果以外部表的形式存储到Blob指定路径,适合需要后续复用结果的场景:

CREATE EXTERNAL TABLE callconfigQueryResult
WITH (
    LOCATION = 'query_output/', -- Blob中存储结果的子路径,会自动创建
    DATA_SOURCE = BlobStorageSource,
    FILE_FORMAT = CsvFileFormat
)
AS
-- 复用你已有的查询语句
SELECT * FROM
 OPENROWSET(BULK 'https://myblob.blob.core.windows.net/testblob/',
 FORMAT = 'CSV')
 WITH
(    
    date1 DATETIME2,
    media varchar(8000),
    callconfig VARCHAR(8000),
    count1 INT
) AS [callconfigTable];

方法2:使用COPY INTO直接导出结果

如果不需要创建外部表,仅需将查询结果导出为Blob文件,使用COPY INTO更直接:

COPY INTO 'https://myblob.blob.core.windows.net/testblob/query_output/' -- Blob输出路径
FROM (
    -- 复用你的查询语句
    SELECT * FROM
     OPENROWSET(BULK 'https://myblob.blob.core.windows.net/testblob/',
     FORMAT = 'CSV')
     WITH
    (    
        date1 DATETIME2,
        media varchar(8000),
        callconfig VARCHAR(8000),
        count1 INT
    ) AS [callconfigTable]
)
WITH (
    FILE_TYPE = 'CSV',
    FIELD_TERMINATOR = ',',
    STRING_DELIMITER = '"',
    CREDENTIAL = BlobStorageCredential, -- 对应前面创建的凭据
    HEADER = 'ON' -- 导出时包含表头,不需要则设为OFF
);

关键注意事项

  • 确保Synapse工作区对目标Blob存储有读写权限,可通过存储账户防火墙规则允许Synapse访问,或使用SAS令牌/存储密钥授权
  • 两种方式都会根据数据量自动生成多个文件,避免单文件过大
  • 如果使用存储账户密钥创建凭据,需确保密钥拥有足够的存储权限

内容的提问来源于stack exchange,提问作者Groot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 20:24:33