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

在专用SQL Pool中使用OPENROWSET函数时遭遇语法错误

解决专用SQL Pool中OPENROWSET语法错误问题

问题原因

专用SQL Pool(原Azure SQL数据仓库)不支持OPENROWSET函数,这是出现语法错误的根本原因。该函数仅在Azure SQL数据库、SQL Server等其他SQL产品中可用。

替代解决方案

针对读取ADLS Gen2中CSV文件的场景,推荐使用外部表或COPY INTO语句实现需求,以下是具体步骤:

方案1:创建外部表读取CSV

  1. 创建外部文件格式
CREATE EXTERNAL FILE FORMAT CsvFormat
WITH (
    FORMAT_TYPE = DELIMITEDTEXT,
    FORMAT_OPTIONS (
        FIELD_TERMINATOR = ',',
        STRING_DELIMITER = '"',
        FIRST_ROW = 2 -- 若CSV包含表头则设为2,无表头设为1
    )
);
  1. 创建匹配CSV结构的外部表
CREATE EXTERNAL TABLE dbo.External_CSV_Data (
    id INT,
    name VARCHAR(100),
    age INT
)
WITH (
    LOCATION = 'blob.csv',
    DATA_SOURCE = anubhav,
    FILE_FORMAT = CsvFormat
);
  1. 查询外部表数据
SELECT TOP 100 * FROM dbo.External_CSV_Data;

方案2:使用COPY INTO直接导入本地表

若无需保留外部表,可直接将CSV数据导入到本地表:

  1. 创建本地目标表
CREATE TABLE dbo.Local_CSV_Data (
    id INT,
    name VARCHAR(100),
    age INT
);
  1. 执行数据导入
COPY INTO dbo.Local_CSV_Data (id, name, age)
FROM 'abfss://adls-container-1998@adlsaccount1998.dfs.core.windows.net/Folder1/blob.csv'
WITH (
    CREDENTIAL = credanubhav,
    FILE_TYPE = 'CSV',
    FIRSTROW = 2 -- 根据是否有表头调整参数
);
  1. 查询本地表数据
SELECT TOP 100 * FROM dbo.Local_CSV_Data;

额外注意事项

  • 确保专用SQL Pool已启用PolyBase支持(默认已启用),且之前配置的数据库主密钥、数据库范围凭据、外部数据源均有效。
  • 若CSV存在特殊格式(如多行字段、自定义分隔符),需对应调整外部文件格式的参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 22:05:17