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

如何按周计划将Azure Synapse SQL的T-SQL查询结果导出到Blob存储或FTP

Azure Synapse SQL 按周导出CSV操作指南

导出到Azure Blob/ADLS Gen2(原生支持)

使用Synapse原生支持的CETAS(CREATE EXTERNAL TABLE AS SELECT)语法即可直接将T-SQL查询结果导出为CSV到目标存储,无需额外第三方工具。

操作步骤

  • 创建数据库范围凭据(用于验证存储访问权限)
CREATE DATABASE SCOPED CREDENTIAL StorageCred
WITH 
    IDENTITY = 'SHARED ACCESS SIGNATURE',
    SECRET = '你的存储账户SAS令牌/访问密钥';
  • 创建指向目标存储的外部数据源
CREATE EXTERNAL DATA SOURCE TargetStorage
WITH (
    LOCATION = 'abfss://<目标容器名>@<存储账户名>.dfs.core.windows.net/导出目录前缀',
    CREDENTIAL = StorageCred
);
  • 定义CSV格式的外部文件格式
CREATE EXTERNAL FILE FORMAT CSV_Export_Format
WITH (
    FORMAT_TYPE = DELIMITEDTEXT,
    FORMAT_OPTIONS (
        FIELD_TERMINATOR = ',',
        STRING_DELIMITER = '"',
        ENCODING = 'UTF8',
        FIRST_ROW = 1 -- 无服务器SQL池可开启导出表头,专用SQL池可通过UNION拼接表头行实现
    )
);
  • 执行CETAS语句导出查询结果
-- 每次导出前先删除旧的外部表(仅删除元数据,不会删除存储内的文件)
IF EXISTS (SELECT * FROM sys.external_tables WHERE name = 'Weekly_Export_Temp')
DROP EXTERNAL TABLE Weekly_Export_Temp
GO

CREATE EXTERNAL TABLE Weekly_Export_Temp
WITH (
    LOCATION = CONCAT('/weekly-export/', FORMAT(GETDATE(), 'yyyyMMdd')), -- 按日期生成子目录避免覆盖
    DATA_SOURCE = TargetStorage,
    FILE_FORMAT = CSV_Export_Format
)
AS
-- 替换为你实际需要执行的T-SQL查询
SELECT col1, col2, create_time FROM your_business_table WHERE 过滤条件;
  • 配置周计划调度
    在Synapse Studio的「集成」模块新建管道,添加「脚本」活动并填入上述SQL逻辑,给管道绑定计划触发器,设置执行周期为每周、指定执行时间即可。

导出到FTP服务器

Synapse原生不支持直接写入FTP,可通过两步流实现:

  1. 按上述步骤先将CSV导出到中间Blob存储
  2. 在同一管道内添加「复制活动」,源选择刚导出的Blob存储CSV文件,目标选择FTP连接器并配置FTP的地址、账号、密码参数
  3. 触发器配置和上述一致,设置为每周周期执行即可

注意事项

  • 存储SAS令牌建议设置足够长的过期时间,避免调度任务中途验证失败
  • 导出路径建议按日期生成唯一目录,便于历史数据回溯
  • 专用SQL池如需导出表头,可在查询中通过UNION ALL拼接表头行和业务数据行实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:36:03