⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 cmd + k | ctrl + k
HTTP(S) 支持

使用 httpfs 扩展,可以直接通过 HTTP(S) 协议查询文件。这适用于 DuckDB 或其各种扩展支持的所有文件,并提供只读访问。

SELECT *
FROM 'https://domain.tld/file.extension';

部分读取

对于 CSV 文件,由于其基于行的格式特性,大多数情况下文件将被完整下载。对于 Parquet 文件,DuckDB 支持部分读取,即它可以结合使用 Parquet 元数据和HTTP 范围请求,只下载查询实际所需的文件部分。例如,以下查询将只读取 Parquet 元数据和 column_a 列的数据

SELECT column_a
FROM 'https://domain.tld/file.parquet';

在某些情况下,根本无需读取实际数据,因为它们只需要读取元数据

SELECT count(*)
FROM 'https://domain.tld/file.parquet';

扫描多个文件

也支持通过 HTTP(S) 扫描多个文件。

SELECT *
FROM read_parquet([
    'https://domain.tld/file1.parquet',
    'https://domain.tld/file2.parquet'
]);

认证

要对 HTTP(S) 端点进行认证,请使用密钥管理器(Secrets Manager)创建一个 HTTP 密钥。

CREATE SECRET http_auth (
    TYPE http,
    BEARER_TOKEN 'token'
);

CREATE SECRET http_auth (
    TYPE http,
    EXTRA_HTTP_HEADERS MAP {
        'Authorization': 'Bearer token'
    }
);

HTTP 代理

DuckDB 支持 HTTP 代理。

您可以使用密钥管理器(Secrets Manager)添加 HTTP 代理。

CREATE SECRET http_proxy (
    TYPE http,
    HTTP_PROXY 'http_proxy_url',
    HTTP_PROXY_USERNAME 'username',
    HTTP_PROXY_PASSWORD 'password'
);

另外,您也可以通过配置选项添加它。

SET http_proxy = 'http_proxy_url';
SET http_proxy_username = 'username';
SET http_proxy_password = 'password';

使用自定义证书文件

要将 httpfs 扩展与自定义证书文件一起使用,请在加载扩展之前设置以下配置选项

LOAD httpfs;
SET ca_cert_file = 'certificate_file';
SET enable_server_cert_verification = true;