Skip to content

DuckDB

An in-process analytical SQL database that runs inside your app with no server to manage.

Stars
42.7k
Forks
4.2k
Licence
MIT
Language
C++
Last update
4 days ago
Type
Library

What it is

DuckDB is a database system built for analytical queries, the kind that summarize and combine large amounts of data. It runs inside your application rather than as a separate server, so there is nothing extra to set up or manage. It can query files like CSV, Parquet, and JSON directly, and it can also attach to PostgreSQL, MySQL, and SQLite databases.

  • Run SQL directly on a Parquet or CSV file with SELECT * FROM 'myfile.parquet'
  • Query data in S3, HTTP(S), Azure, or Google Cloud Storage without importing it first
  • Join data from PostgreSQL, MySQL, or SQLite tables in a single query
  • Read and manage tables in open lakehouse formats such as DuckLake, Iceberg, or Delta Lake

Great for

  • Analysts who want to run SQL directly on CSV, Parquet, or JSON files
  • Python or R users who work with pandas-style data and want fast SQL
  • Developers embedding an analytical database in an application without running a server
  • Students learning SQL on realistic data sets

Not ideal for

  • Teams needing a high-volume transactional database for many concurrent writers, since DuckDB is designed for analytics rather than OLTP workloads
  • People who want a fully managed hosted service, because the README describes an embedded system and support options rather than a hosted product
Step-by-step guide: how to use DuckDBInstall, first run, examples, tips and FAQs

How to get it

  1. 1

    Download the app

    Clone the repository

    git clone https://github.com/duckdb/duckdb
  2. 2

    Run it

    • Download the CLI archive for your platform from the latest release page, or follow the installation page linked in the README
    • Extract the archive and run the duckdb executable
    • At the prompt, run SELECT * FROM 'myfile.csv'; using a file you have locally
    • Or install a client library for your language, such as Python, R, or Java, following the docs
  3. 3

    Get the most out of it

    • Use the friendly SQL extensions to write shorter queries, as described in the README
    • Load core and community extensions at runtime to add file formats, connectors, and functions
    • Attach PostgreSQL, MySQL, or SQLite databases to query them in place without ETL
    • Use DuckLake, Iceberg, or Delta Lake support when working with lakehouse data

Downloads

Strengths

  • Runs in-process with no separate server and no external dependencies, according to the README
  • Supports a broad SQL dialect including window functions, nested subqueries, and complex types
  • Reads many file formats directly from local disk or cloud storage

Trade-offs

  • The README is truncated and gives little detail on performance trade-offs or limits, so claims about speed should be checked against benchmarks
  • Advanced features like the quack protocol and lakehouse formats add complexity that beginners may not need
  • Building from source requires CMake, Python 3, and a C++17 compiler

How it compares

ProjectStarsTypeLevelUpdatedBest for
duckdb (this)42.7kLibrarybeginner4 days agoAnalysts who want to run SQL directly on CSV, Parquet, or JSON files
polars40.2kLibraryintermediate4 days agoPython users who analyze large CSV or Parquet files and find slower tools too slow
turso25.1kLibraryintermediate4 days agoDevelopers who want an embedded SQLite-compatible database in a Rust, JavaScript, Python, Java, Go, or .NET project
lowdb22.6kLibrarybeginner7 months agoNode.js developers building small tools or prototypes that need simple persistent storage
kysely14.3kLibraryintermediate4 days agoTypeScript developers who want SQL control without losing compile-time type checks
vanna23.8kLibraryintermediate9 months agoDevelopers adding a natural-language data question box to an internal app

Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.