Skip to main content

omniload

Copy data between any source and any destination.

License Downloads / month Python versions

About

omniload is a polyglot data loader framework based on dlt, the open-source Python library for building data pipelines. dlt does the heavy lifting (schema inference, normalization, and incremental load state); omniload wraps it behind a single CLI and a URI scheme, so you can copy data between any source and any destination without writing pipeline code, either from your shell or the Python API.

omniload provides the same efficient incremental data loading modes inherited by dlt: append, merge, and delete+insert.

Install

Container

For running omniload in a container environment, use the provided OCI images.

docker run --rm ghcr.io/panodata/omniload:latest version

Package

For running or installing the omniload Python package, we are recommending to use uv. 12

uvx omniload

Alternatively, if you like to install it account-wide on your system:

uv tool install omniload

Synopsis

CLI

Instruct omniload to read from the PostgreSQL table public.some_data, and write to the BigQuery warehouse table omniload.some_data.

omniload ingest \
    --source-uri 'postgresql://admin:admin@localhost:8837/web?sslmode=disable' \
    --source-table 'public.some_data' \
    --dest-uri 'bigquery://<your-project-name>?credentials_path=/path/to/service/account.json' \
    --dest-table 'omniload.some_data'

Python API

Using omniload.run_ingest, you can run the same ingestion from your own application. The keyword arguments map one-to-one to the CLI options, and it returns the dlt LoadInfo for the run (or None for a dry run).

from omniload import run_ingest

info = run_ingest(
    source_uri="sqlite:///./source.db",
    dest_uri="duckdb:///./warehouse.duckdb",
    source_table="main.some_table",
    dest_table="public.some_table",
)
print(info)

See the Python API documentation for dry runs, error handling, and passing enum options as strings.

Handbook

Please visit the quickstart documentation, or inspect the list of supported sources and destinations.

Project

Contribute

Contributions are very much welcome. Please visit the sandbox documentation to learn how to spin up a development environment on your workstation and submit patches, or create a ticket to report a bug or propose a feature.

Status

Breaking changes should be expected until a 1.0 release, so version pinning is strongly recommended, especially when using this software as a library. For example:

pip install 'omniload[full]==0.0.42'

License

The project is licensed under the MIT License, see the LICENSE file for details. Some components are licensed under the Apache 2.0 license, see the NOTICE file for details.

Acknowledgements

This project would not have been possible without the amazing work by the authors and contributors to SQLAlchemy, dlt, and ingestr, turtles all the way down. Kudos.

  1. You can install uv using pip install uv, or another method that matches your operating system.

  2. While installing omniload with vanilla pip is possible, it is an order of magnitude slower.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

omniload-0.9.0.tar.gz (425.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

omniload-0.9.0-py3-none-any.whl (573.3 kB view details)

Uploaded Python 3

File details

Details for the file omniload-0.9.0.tar.gz.

File metadata

  • Download URL: omniload-0.9.0.tar.gz
  • Upload date:
  • Size: 425.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for omniload-0.9.0.tar.gz
Algorithm Hash digest
SHA256 71410057004ece8e60959eca438f129739c6e729cc85955b6d5103fac07555b7
MD5 6b07e50020df280e7e13a59c33ae79f3
BLAKE2b-256 2cd4bbc6cdbb82193dfc555aa71267cf7ede8397f31dd4e1e17d3ec98551ba00

See more details on using hashes here.

Provenance

The following attestation bundles were made for omniload-0.9.0.tar.gz:

Publisher: release-pypi.yml on panodata/omniload

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omniload-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: omniload-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 573.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for omniload-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ae448fda17addf401d73a0012b79645c3e11a4d226d4522d884eaa51d740ed72
MD5 5450b6a08d9b215e4e6a11eb70c98429
BLAKE2b-256 e64d6bfa562a096fdb1605508cbd1fc1a5a345e2f674efa49f8ca605db7f7476

See more details on using hashes here.

Provenance

The following attestation bundles were made for omniload-0.9.0-py3-none-any.whl:

Publisher: release-pypi.yml on panodata/omniload

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.11.0

2 files

0.10.1

2 files

0.10.0

2 files

0.9.2

2 files

0.9.1

2 files

This release

0.9.0 This release

2 files

0.8.0

2 files

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

0.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page