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

如何通过管道在Azure Synapse无服务器SQL池从ADLSGen2创建表/视图?

在Azure Synapse无服务器SQL池(db_mcm)中通过数据管道从ADLS Gen2 CSV创建视图/外部表

前置准备

  • 确保ADLS Gen2存储账户已授予Synapse无服务器SQL池访问权限:可通过工作区托管身份配置Storage Blob Data Reader角色,或使用SAS密钥/账户密钥。
  • 确认CSV文件的核心属性:分隔符、是否含表头、字段类型、编码等。

方法一:通过数据管道创建视图

  1. 打开Synapse Studio,进入集成模块,新建数据管道。
  2. 在画布中添加Script活动:
    • 在活动的设置标签页,选择关联到db_mcm所在的无服务器SQL池连接。
    • 在脚本编辑器中输入创建/替换视图的SQL,示例如下:
      CREATE OR ALTER VIEW dbo.Customer_View
      AS
      SELECT *
      FROM OPENROWSET(
          BULK 'abfss://your-container@your-adls-account.dfs.core.windows.net/csv-folder/*.csv',
          FORMAT = 'CSV',
          FIRSTROW = 2, -- 若CSV含表头则设为2,无表头设为1
          FIELDTERMINATOR = ',', -- 替换为你的CSV分隔符
          ROWTERMINATOR = '\n'
      ) WITH (
          CustomerID VARCHAR(20),
          CustomerName NVARCHAR(100),
          RegisterDate DATE
      ) AS csv_result
      
    • 替换存储路径、列定义、格式参数为实际值。
  3. 保存管道并触发运行,完成后即可在数据->工作区->SQL数据库->db_mcm下查看创建的视图。

方法二:通过数据管道创建外部表

外部表适用于结构固定、需重复访问的场景,步骤如下:

  1. 新建数据管道,添加Script活动并关联目标无服务器SQL池。
  2. 在脚本编辑器中执行以下三步操作(按需调整参数):
    -- 1. 创建外部数据源(若未存在)
    IF NOT EXISTS (SELECT * FROM sys.external_data_sources WHERE name = 'ADLS_CSV_Source')
    CREATE EXTERNAL DATA SOURCE ADLS_CSV_Source
    WITH (
        LOCATION = 'abfss://your-container@your-adls-account.dfs.core.windows.net/csv-folder/',
        TYPE = HADOOP
    );
    
    -- 2. 创建外部文件格式(若未存在)
    IF NOT EXISTS (SELECT * FROM sys.external_file_formats WHERE name = 'Standard_CSV_Format')
    CREATE EXTERNAL FILE FORMAT Standard_CSV_Format
    WITH (
        FORMAT_TYPE = DELIMITEDTEXT,
        FORMAT_OPTIONS (
            FIELD_TERMINATOR = ',',
            FIRST_ROW = 2,
            QUOTE_CHAR = '"', -- 若CSV字段含引号需添加
            USE_TYPE_DEFAULT = FALSE
        )
    );
    
    -- 3. 创建外部表
    CREATE OR ALTER EXTERNAL TABLE dbo.Customer_ExternalTable (
        CustomerID VARCHAR(20),
        CustomerName NVARCHAR(100),
        RegisterDate DATE
    )
    WITH (
        LOCATION = '*.csv', -- 指向文件夹下所有CSV文件
        DATA_SOURCE = ADLS_CSV_Source,
        FILE_FORMAT = Standard_CSV_Format
    );
    
  3. 保存并运行管道,完成后在db_mcm中即可看到该外部表。

关键注意事项

  • 若使用托管身份,需确保Synapse工作区的托管身份已在ADLS Gen2存储账户的目标容器/文件夹上配置对应权限。
  • OPENROWSET和外部表均支持通配符(如*.csv),可批量读取同目录下的多个CSV文件。
  • 若CSV存在换行字段等特殊格式,需在文件格式中调整ROWTERMINATOR等参数适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 06:23:25