Zum Inhalt springen

HTTP(S)-Unterstützung

Mit der Erweiterung httpfs können Dateien direkt über das HTTP(S)-Protokoll abgefragt werden. Das funktioniert für alle Dateien, die DuckDB oder seine verschiedenen Erweiterungen unterstützen, und bietet nur Lesezugriff.

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

Partielles Lesen

CSV-Dateien werden in den meisten Fällen vollständig heruntergeladen, weil das Format zeilenbasiert ist. Für Parquet-Dateien unterstützt DuckDB partielles Lesen, d. h. es kann Parquet-Metadaten und HTTP-Range-Requests kombinieren, um nur die Teile der Datei herunterzuladen, die die Abfrage tatsächlich braucht. Die folgende Abfrage liest beispielsweise nur die Parquet-Metadaten und die Daten der Spalte column_a:

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

In manchen Fällen müssen gar keine eigentlichen Daten gelesen werden, weil nur Metadaten nötig sind:

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

Mehrere Dateien scannen

Das Scannen mehrerer Dateien über HTTP(S) wird ebenfalls unterstützt:

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

Authentifizierung

Um sich an einem HTTP(S)-Endpunkt zu authentifizieren, legen Sie mit dem Secrets Manager ein HTTP-Secret an:

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

Oder:

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

HTTP-Proxy

DuckDB unterstützt HTTP-Proxys.

Sie können einen HTTP-Proxy über den Secrets Manager hinzufügen:

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

Mit dem Schlüsselwort SCOPE können Sie den Geltungsbereich eines HTTP-Proxys festlegen.

CREATE SECRET http_proxy (
TYPE HTTP,
SCOPE ['⟨https://duckdb.org⟩', '⟨https://some-other-website.org⟩'],
HTTP_PROXY '⟨http_proxy_url⟩',
HTTP_PROXY_USERNAME '⟨username⟩',
HTTP_PROXY_PASSWORD '⟨password⟩'
);

Alternativ können Sie ihn über Konfigurationsoptionen setzen:

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

Hinweis: Über die Konfigurationsoptionen können Sie keinen Proxy-Geltungsbereich setzen.

Eigene Zertifikatsdatei verwenden

Um die Erweiterung httpfs mit einer eigenen Zertifikatsdatei zu nutzen, setzen Sie vor dem Laden der Erweiterung die folgenden Konfigurationsoptionen:

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

Wenn Sie die SSL-Prüfung für alle HTTP-Anfragen über ein HTTP-Secret deaktivieren möchten, können Sie das mit der folgenden Anweisung tun:

CREATE SECRET disable_ssl (
TYPE HTTP,
VERIFY_SSL 0
);

Um sie für einen bestimmten Endpunkt wieder zu aktivieren, können Sie den Parameter SCOPE nutzen:

CREATE SECRET enable_ssl_for_your_website (
TYPE HTTP,
SCOPE 'https://⟨your-website.com⟩',
VERIFY_SSL 1
);