DuckDB-Datenbanken direkt lesen
DuckDB ermöglicht das direkte Lesen von DuckDB-Dateien über die Funktion read_duckdb:
read_duckdb(⟨'path_to_database'⟩, table_name = ⟨'table_to_read'⟩);Diese Funktion entspricht den folgenden Schritten:
- Anhängen der Datenbank mit einer schreibgeschützten Verbindung.
- Abfragen der über das Argument
table_nameangegebenen Tabelle. - Schließen der Verbindung zur Datenbank.
Beispiele
Eine bestimmte Tabelle lesen
Um die Tabelle region aus dem TPC-H-Datensatz zu lesen, führen Sie aus:
SELECT r_regionkey, r_nameFROM read_duckdb('https://blobs.duckdb.org/data/tpch-sf10.db', table_name = 'region');┌─────────────┬─────────────┐│ r_regionkey │ r_name ││ int32 │ varchar │├─────────────┼─────────────┤│ 0 │ AFRICA ││ 1 │ AMERICA ││ 2 │ ASIA ││ 3 │ EUROPE ││ 4 │ MIDDLE EAST │└─────────────┴─────────────┘Aus mehreren Datenbanken lesen
Sie können Globbing verwenden, um aus mehreren Datenbanken zu lesen. Um das zu veranschaulichen, legen wir zwei Tabellen an:
duckdb my-1.duckdb \ -c "CREATE TABLE numbers AS SELECT 42 AS x;" \ -c "CREATE TABLE letters AS SELECT 'm' AS a;"
duckdb my-2.duckdb \ -c "CREATE TABLE numbers AS SELECT 43 AS x;"Anschließend können Sie in DuckDB Folgendes ausführen:
SELECT x FROM read_duckdb('my-*.duckdb', table_name = 'numbers');┌───────┐│ x ││ int32 │├───────┤│ 42 ││ 43 │└───────┘Aus Datenbanken mit einer einzigen Tabelle lesen
Wenn alle Datenbanken im Argument von read_duckdb nur eine Tabelle enthalten, ist das Argument table_name optional:
FROM read_duckdb('my-2.duckdb');┌───────┐│ x ││ int32 │├───────┤│ 3 │└───────┘Wenn die Dateiendung .db oder .duckdb ist, können Sie den Aufruf von read_duckdb ebenfalls weglassen (analog zu read_csv und read_parquet):
FROM 'my-2.duckdb';Einschränkungen
read_duckdb unterstützt derzeit nur das Lesen von Tabellen.
Das Lesen von Views wird noch nicht unterstützt.