ingestr
ingestr is a command-line application that ingests data from various sources and stores them in any database.
What it is and what it does
ingestr is a command-line data ingestion tool that eliminates the need to write custom code for moving data between systems. It handles the complexity of connecting to sources (databases, APIs, cloud platforms, files) and writing to destinations, accepting simple URI-based connection strings and table names. The tool supports incremental loading strategies—append, merge, or delete+insert—to handle common ETL patterns.
You can use it as a standalone CLI command or import it as a Python SDK. The Python SDK accepts lists of dictionaries, DataFrames, or generator functions as data sources, transporting them to destinations via Arrow IPC streams. It supports a wide range of sources (Postgres, MySQL, MongoDB, BigQuery, Snowflake, Kafka, CSV files, and many SaaS APIs) and destinations (most major databases and cloud storage systems), making it useful for ad-hoc migrations, regular syncs, and data warehouse loading.
Use it for:
- Migrate a PostgreSQL table to BigQuery without writing ETL code—just specify source and destination URIs.
- Load data from a CSV file into DuckDB or Snowflake on a schedule using the CLI.
- Sync MongoDB collections to a data warehouse with incremental merge logic to handle updates.
- Ingest API data (e.g., from HubSpot, Stripe, or GitHub) into your analytics database in a single command.
- Use the Python SDK to stream generator output (e.g., paginated API responses) directly to a database.
- Set up CDC-based replication from MySQL or Postgres to keep a destination table in sync.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
ingestr is a command-line tool that copies data from any source (databases, APIs, files) to any destination without writing code, supporting incremental loading modes like append, merge, and delete+insert.
Yes. ingestr is worth installing if you need to move data between systems without writing custom code. It has low install friction, no runtime dependencies, active maintenance, a permissive license, and supports a broad ecosystem of sources and destinations. The CLI is straightforward, and the Python SDK is flexible enough for programmatic use. No known security vulnerabilities. The main gotcha is the Python 3.10+ requirement and the binary download on first SDK use.
Install
ingestr on PyPI
pip
pip install ingestruv
uv add ingestrpoetry
poetry add ingestrInstalling ingestr
Before you install
Low install friction; pure Python wheel with no runtime dependencies. Active maintenance with recent releases and strong community engagement (3839 GitHub stars). Requires Python 3.10 or later.
License in practice
MIT license (permissive) means you can use, modify, and distribute ingestr freely in commercial and private projects with minimal restrictions.
Quickstart
pip install ingestr
ingestr ingest \
--source-uri 'postgresql://user:pass@host/db' \
--source-table 'public.table' \
--dest-uri 'duckdb:///warehouse.duckdb' \
--dest-table 'main.table'
Requires Python 3.10 or later. The CLI binary is downloaded and cached on first Python SDK use.
Verify before relying
- Whether the cached binary download works reliably behind corporate proxies or with network restrictions
- Performance characteristics when moving very large datasets across different database types
- Exact CDC (Change Data Capture) support scope beyond the three databases marked in the documentation
Package facts
| License | not declared (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 0 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 122,724/month — #11,938 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: ingestr-1.1.31-py3-none-any.whl
Tags
More Database packages
psycopg2-binary is a PostgreSQL database…
copyleft · top 1,000 on PyPI
redisPython client library for connecting to and…
permissive · top 1,000 on PyPI
ydbYDB Python SDK is the official client library…
permissive · top 1,000 on PyPI
snowflake-connector-pythonConnects Python applications to Snowflake data…
permissive · top 1,000 on PyPI
sqlparsesqlparse tokenizes SQL text into a tree of…
permissive · top 1,000 on PyPI
dbt-adaptersProvides base adapter protocols and shared…
permissive · top 1,000 on PyPI
unstructured-ingestUnstructured Ingest is a local ETL pipeline…
permissive · top 15,000 on PyPI
acryl-datahubDataHub's ingestion framework and CLI for…
permissive · top 5,000 on PyPI
sonic-clientPython client library for the Sonic search…
permissive · top 15,000 on PyPI
openmetadata-ingestionOpenMetadata Ingestion is a framework for…
unclear · top 15,000 on PyPI
azure-kusto-ingestIngest data into Azure Kusto clusters from…
permissive · top 5,000 on PyPI
slingSling moves data between databases, files, and…
unclear · top 15,000 on PyPI
gitingestConverts Git repositories into plain-text…
permissive · top 15,000 on PyPI
dltdlt automates extraction, schema inference, and…
permissive · top 5,000 on PyPI
databricks-zerobus-ingest-sdkA Python client for streaming data ingestion…
unclear · top 15,000 on PyPI
django-postgres-copyProvides Django ORM integration for…
permissive · top 5,000 on PyPI