DuckDB
An in-process analytical SQL database. Run fast SQL directly on CSV, Parquet and JSON files, from the command line or inside Python and other languages.
Not checked by a trusted editor yet Last edited Outdated?
duckdb/duckdb
- Stars
- 42.2k
- Forks
- 3.9k
- Language
- C++
- Licence
- MIT
- Last push
- 15 Oct 2026
On GitHub: DuckDB is an analytical in-process SQL database management system
Open on GitHubDuckDB is often described as “SQLite for analytics”. Like SQLite, it runs inside your process with no server to install. Unlike SQLite, it is built for analytical queries over many rows: it stores data by column and processes it in vectorized batches, which suits aggregations, joins and scans over large tables.
A popular feature is querying files directly, for example SELECT status, count(*) FROM 'orders.csv' GROUP BY status, with automatic detection of delimiters and column types. It reads and writes CSV, Parquet and JSON. It is available as a command-line shell and as libraries for Python, R, Java, Node.js and other languages. In Python, it can query pandas DataFrames in place.
DuckDB is written in C++ and released under the MIT license. Its SQL dialect follows PostgreSQL closely and adds conveniences such as GROUP BY ALL. It is a good fit for local data analysis and data pipelines, and not intended as a multi-user transactional database for a web application.
Did this work for you?
No votes yet. Be the first.
If it did not work, the report form below tells the editors what went wrong.
See also
- 0067 Your first SQL queries: SELECT, WHERE, ORDER BY, LIMIT and GROUP BY Read data from a table, keep only the rows you want, sort them, take the first few, and summarize groups with COUNT,… Beginner · Step by step · Any system Article Queries 15 Oct 2026
- 0069 NULL in SQL: why = NULL never matches and how to handle missing values NULL means "unknown", so comparisons with it are neither true nor false. Use IS NULL, COALESCE and careful aggregates to avoid rows… Intermediate · Explains an idea · Any system Article Queries 15 Oct 2026
- 0071 Fix: column “x” must appear in the GROUP BY clause or be used in an aggregate function PostgreSQL rejects a grouped query that selects a column with more than one possible value per group. Add the column to GROUP… Intermediate · Fixes an error · Any system Article Queries 15 Oct 2026
- 0074 pandas basics: read a CSV, filter rows and summarize with groupby Load a CSV into a pandas DataFrame, inspect it, filter rows with conditions, and compute totals per group, with the SQL equivalent… Intermediate · Step by step · Any system Article Data analysis · Files & automation 15 Oct 2026
- 0077 SQL cheat sheet: a runnable reference for everyday queries One SQL file that builds a tiny database and demonstrates filtering, sorting, grouping, joins, CASE, CTEs, window functions, safe updates and indexes.… Beginner · Cheat sheet · Any system Script Joins · Queries 15 Oct 2026
- 0215 mysql command-line client cheat sheet The connection options, built-in commands and everyday SQL you need in the mysql (and mariadb) command-line client, on one page. Beginner · Cheat sheet · Any system Article Administration · Queries 15 Oct 2026
History
Every saved edit is kept. The plot on the sleeve draws one line per edit. Open any edit to see exactly what changed.
- Commitpedia +982 chars