DuckDB
DuckDB 1.5.5 is an embedded analytical SQL database that queries CSV, JSON, Parquet and local database files for single-machine analytics, OLAP applications, data conversion and reproducible research.
What DuckDB provides
DuckDB runs as a command-line program or embedded library and can query CSV, JSON, Parquet, Arrow and database files directly. It is useful for local analysis, ETL, notebooks and data products without maintaining a separate database server. It is not a replacement for a multi-tenant service that needs account permissions, auditing and high-concurrency transactional writes.
Files, extensions and resource boundaries
SQL can read local or remote files, load extensions and consume substantial CPU, memory and temporary disk. Treat untrusted SQL like executable code: restrict directories and network access, set resource limits, use process or container isolation and allowlist extensions. Multiple independent processes should not frequently write the same database file.
Stable line and reproducibility
Version 1.5.5 is the current stable line, while 1.4.5 is a parallel LTS line. The CLI, language bindings, database format and extensions must be tested as a set. Pin versions and lockfiles when a query result or pipeline needs to be reproduced. Review date: 2026-08-23.
Save to your cloud drive
Open the cloud drive to get the file directly, or save it for convenient access on another device.
Quark Cloud Drive
RecommendedSave DuckDB to this cloud drive
Baidu Netdisk
Save DuckDB to this cloud drive
DuckDB 1.5.5 installation, Parquet query and safe configuration guide
Create a test database in an isolated directory, inspect a public CSV, query a Parquet file and verify output before connecting real data or accepting external SQL.
Before you start
- Choose the CLI, Python, R, JDBC, Node.js or another client and pin DuckDB and extension versions together.
- Reserve space for the database file, WAL and temporary intermediate results, and prepare reproducible test data.
- Use a least-privilege account for sensitive files and define the directories, network and extensions the process may access.
Installation steps
- 01
Install the matching stable build
Select the 1.5.5 CLI for the Windows, macOS or Linux architecture, or pin the language package in its lockfile; evaluate the 1.4.5 LTS line separately.
- 02
Verify the database location
Check the version, create a test database in a local directory and keep production files out of automatic sync folders or locations with multiple writers.
- 03
Set memory and external-access limits
Configure memory, threads and a controlled temporary directory, then use safe mode or directory and network restrictions when processing untrusted input.
Quick start
- 01
Inspect input types first
Describe a sample CSV query and limit rows before analysis; verify date, encoding and large-integer types instead of trusting inference blindly.
- 02
Create a checked table
Import the sample inside a transaction, check row counts, nulls and keys, then checkpoint the database before continuing.
- 03
Query and export Parquet
Use projection and filters to read only required columns, export the result to a controlled directory and reopen it to check types and counts.
Usage tips
- Embedded analytics is convenient, but server databases remain a better fit for accounts, auditing, high-concurrency writes and online transactions.
- Parameterize values and do not execute complete SQL submitted by an external user.
- Community extensions come from third parties and should be reviewed and allowlisted for production.
Troubleshooting and uninstall
Why is the database locked or read-only?
Check for another writer, directory permissions and read-only mounts, then back up the file before closing an old process. Do not remove an active WAL or lock file by force.
Why do large queries exhaust memory or temporary disk?
Add filters and column projection, process inputs in batches and set memory, thread and temporary-directory limits. Inspect sorts, joins and aggregations that create large intermediates.
- Export and verify required dataExport important tables to Parquet or another supported format, reopen them and compare row counts, checksums and field types before removing the client.
- Remove clients and extension cachesClose all connections, uninstall the CLI or language package and clear extension or temporary data only after checking that no other project uses the shared environment.
Frequently asked questions
Does DuckDB need a database server to start?
No. It normally runs as a CLI or embedded library with an in-memory or single-file database, rather than as a long-running service like MySQL or PostgreSQL.
Is DuckDB suitable for many independent processes writing one file?
It is designed for embedded analytics and controlled concurrency, not frequent multi-process writes with server-style permissions. Use a server database for that workload.
Can untrusted SQL be treated as harmless text?
No. SQL can read files, reach network resources, load extensions and consume resources. Use isolation, allowlists, resource limits and least-privilege paths.