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

使用OPENROWSET读取本地Parquet文件时遇加载库失败及路径支持问题

问题描述

尝试执行以下SQL语句读取本地Parquet文件:

SELECT * FROM OPENROWSET(
    BULK 'H:\Linolium\somename.parquet', FORMAT = 'PARQUET') AS data;

执行后出现错误:

Could not load external library 'E:\DB\MSSQL16.SQL2022\MSSQL\Binn\extractors\ParquetReaderExtractor.dll'.

使用的SQL Server版本:

Microsoft SQL Server 2022 (RTM-CU18) (KB5050771) - 16.0.4185.3 (X64)

未安装Polybase或Azure扩展,咨询这是不支持功能、存在bug还是缺少组件?安装Polybase后,又出现新错误:

Connector prefix 'SomePath\small.parquet' is not supported for specified FORMAT 'PARQUET'.

尝试UNC路径和驱动器路径均出现相同错误。

问题分析与解决

第一个错误:无法加载ParquetReaderExtractor.dll

  • SQL Server 2022中,用OPENROWSET直接读取Parquet格式文件必须依赖Polybase组件,未安装时系统缺少解析Parquet的必要库文件,这是功能依赖要求,并非bug。

第二个错误:路径前缀不支持

安装Polybase后仍报错,是因为Parquet这类外部数据源不能直接通过本地路径传入BULK参数,需要借助外部数据源对象来引用,操作步骤如下:

  1. 启用Ad Hoc分布式查询(若未启用):
sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
  1. 创建指向本地文件目录的外部数据源:
CREATE EXTERNAL DATA SOURCE LocalParquetSource
WITH (
    LOCATION = 'FILE:///H:/Linolium/',
    TYPE = FILE_SYSTEM
);
  1. 通过外部数据源读取Parquet文件:
SELECT *
FROM OPENROWSET(
    BULK 'somename.parquet',
    DATA_SOURCE = 'LocalParquetSource',
    FORMAT = 'PARQUET'
) AS data;
  • 注意事项:
    • 路径统一使用正斜杠/,避免反斜杠转义问题
    • SQL Server服务账户需拥有目标文件目录的读取权限
    • 若用UNC路径,将LOCATION设置为FILE:///\\servername\sharename\格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:12:10