Skip to main content

sqlite2duckdb

CI PyPI - Python Version PyPI - Downloads

A tool for converting a sqlite database into a duckdb database

Description

Sqlite is an embedded online database designed for transactional reading and writing. Duckdb is also an embedded database, but column-oriented, designed for analytical process with a very high reading efficiency.

For more details Medium post

Installation

With uv, no installation is required. uvx downloads and runs the tool in one go:

uvx sqlite2duckdb source.db target.db

To keep it around:

uv tool install sqlite2duckdb

Or with pip:

pip install sqlite2duckdb

Usage

As a command line

usage: sqlite2duckdb [-f] <sqlite_path> <duckdb_path>

Convert Sqlite database to Duckdb database

positional arguments:
  sqlite_path    sqlite file path
  duckdb_path    duckdb file path

options:
  -h, --help     show this help message and exit
  -f, --force    overwrite the duckdb file if it already exists
  -q, --quiet    only report errors
  --verbose      report every step
  -v, --version  show program's version number and exit

Examples

uvx sqlite2duckdb source.db target.db
uvx sqlite2duckdb --force source.db target.db   # overwrite target.db without asking

From python

from sqlite2duckdb import sqlite_to_duckdb

result = sqlite_to_duckdb("source.sqlite", "target.duckdb")
print(result.tables, result.views, result.elapsed)

What is converted

Tables and data ✅
Primary keys, NOT NULL and UNIQUE constraints ✅
Indexes ✅
Views ✅ best effort
FOREIGN KEY and CHECK constraints ❌

A view whose SQL uses something duckdb has no equivalent for (MATCH, julianday()) is skipped with a warning instead of failing the conversion.

FOREIGN KEY and CHECK are not copied, though not for lack of support: duckdb accepts and enforces both in CREATE TABLE. It checks foreign keys row by row, so a self-referencing table cannot be bulk loaded, and there is no ALTER TABLE ADD CONSTRAINT to add them once the data is in.

Contributing

The project uses uv for everything:

make dev     # uv sync — installs duckdb plus the test deps (pytest, faker, ruff)
make test    # uv run pytest
make lint    # uv run ruff check . && uv run ruff format --check .
make build   # uv build
make publish # uv publish (PyPI trusted publishing, also run on tags by CI)

See also

  • Harlequin: A nice duckdb IDE for your terminal

Metadata

Release files for sqlite2duckdb 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sqlite2duckdb 0.5.0
File Size Uploaded
sqlite2duckdb-0.5.0.tar.gz 13.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sqlite2duckdb 0.5.0
File Interpreter ABI Platform
sqlite2duckdb-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 22.1 kB

Release files / sqlite2duckdb-0.5.0.tar.gz

Download URL sqlite2duckdb-0.5.0.tar.gz
Size 13.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2ad934a0cf9b64abbac397267832c8ebf6ce1e511b4e312034f7d0f1b9d395ff
BLAKE2b-256 checksum
How to use checksums
4403971c924197dced3b83818ff9091244711fc0b0b856ea82dffaea90ead5e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / sqlite2duckdb-0.5.0-py3-none-any.whl

Download URL sqlite2duckdb-0.5.0-py3-none-any.whl
Size 8.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0d0f5573dce51ef0f3a039d9865f49d8bcd691228704978a9dab0603a5209ffd
BLAKE2b-256 checksum
How to use checksums
e64efa30827026f5bc9d917d663ce5d34c309e39bfb9b0b343e654ec0a4be3fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.0

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page