42,954
stars
+21
4,184
forks
279
watchers
16,314
prs
8,192
issues
65
releases
3,631
discussions
README
DuckDB DuckDB is a high-performance analytical database system. It is designed to be fast, reliable, portable, and easy to use. DuckDB runs in-process inside your application, so there is no separate server to manage and no external dependencies. It can also read remote files, query other databases, and connect to other DuckDB instances when needed. It provides a rich SQL dialect with support far beyond basic SQL: arbitrary and nested correlated subqueries, window functions, collations, and complex types (arrays, structs, maps). Its friendly SQL extensions add syntax that makes queries shorter and easier to write. DuckDB is available as a standalone CLI application and has clients for Python, R, Java, Rust, Go, Wasm, and many more, with deep integrations with packages such as pandas. For more information on using DuckDB, please refer to the DuckDB documentation. Reads and writes any data DuckDB reads and writes a wide range of file formats, including CSV, Parquet, JSON, and Excel, directly from local disk or from remote endpoints such as S3, HTTP(S), Azure, and Google Cloud Storage. For many of these formats, including CSV, Parquet, and JSON, loading data is as simple as referencing the file in the FROM clause: sql SELECT FROM 'myfile.csv'; SELECT FROM 'myfile.parquet'; DuckDB also works with open lakehouse formats. DuckLake stores table metadata in a SQL database rather than in metadata files, which removes the need for a separate catalog server while still providing ACID transactions, snapshots, and time travel. DuckDB also supports the Apache Iceberg and Delta Lake formats. Refer to our Data Import section for more information. Connects to other databases DuckDB can attach to other database systems and query them in place, so you can read, join, and move data across engines without a separate ETL step. It speaks the native protocols of PostgreSQL, MySQL, and SQLite. DuckDB instances can also connect to each other over the quack protocol, which turns a DuckDB instance into a server that other DuckDB clients attach to over HTTP. Extensible DuckDB has a modular extension mechanism: core extensions are bundled with DuckDB, while community and third-party extensions can be installed and loaded at runtime. Extensions add file formats, database connectors, and new functions, types, and more. Installation If you want to install DuckDB, please see our installation page for instructions. SQL Reference The documentation contains a SQL introduction and reference. Development For development, DuckDB requires CMake, Python 3 and a C++17 compliant compiler. In the root directory, run make to compile the sources. For development, use make debug to build a non-optimized debug version. You should run make unit and make allunit to verify that your version works properly after making changes. To test performance, you can run BUILD_BENCHMARK=1 BUILD_TPCH=1 make and then perform several standard benchmarks from the root directory by execu
Top issues
#57ALTER TABLE support for adding foreign key constraints28 comments · 2018-12-06#604Extended Collation Support20 comments · 2020-04-29#14692`list_concat([1], null)` doesn't match `[1] || null`19 comments · 2024-11-04#1768Add support for SERIAL and BIGSERIAL type18 comments · 2021-05-16#13217Query with hive partitioning much slower than hardcoded path17 comments · 2024-07-31#11817Out-of-memory error when performing partitioned copy to S316 comments · 2024-04-24#11693Unnest not supported for deeply nested JSON16 comments · 2024-04-17#13466UNNEST should not be allowed within CASE statements15 comments · 2024-08-19
Discussions
#28560Are bound parameters in CREATE SECRET officially supported? Can this be documented?0 comments · 2026-11-08#28510Feature Request: Add implicit upcasting to table schemas0 comments · 2026-11-07#28428Help with quack_serve2 comments · 2026-11-05#28411Aggregating over thousands of Parquet files2 comments · 2026-11-05#28363Add zip file to releases for Windows0 comments · 2026-11-04#28359OpenHarmony (arm64) build support PRs ready for review0 comments · 2026-11-04#28322Feature Request: pass progress data from quack server to quack client0 comments · 2026-11-03#28294Any plans to provide a container image for Quack?0 comments · 2026-11-03
Latest release
DuckDB v2.0.0 "Cyanoptera" v2.0.0 2026-10-21This release of DuckDB is named "Cyanoptera" after Spatula Cyanoptera, a species of duck found in western North and South America. Please also refer to the announcement blog post: https://duckdb.org/2026/10/21/announcing-duckdb-200.html What's Changed Make Identifier a class instead of using string everywhere by @Mytherin in https://github.com/duckdb/duckdb/pull/23161 Move to tidy-check diff again by @Mytherin in https://github.com/duckdb/duckdb/pull/23196 Step 3: Make duplicate eliminator optimizer logic work for CTE rewrite by @kryonix in https://github.com/duckdb/duckdb/pull/23