skillfed

ingestr

ingestr is a command-line application that ingests data from various sources and stores them in any database.

ingestr v1.1.31 122.7K downloads/30d#11,938 on PyPI3,839
Permissive license Active released

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 ingestr

uv

uv add ingestr

poetry

poetry add ingestr

Installing 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

Development Status :: 4 - BetaEnvironment :: ConsoleIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseOperating System :: OS IndependentProgramming Language :: Python :: 3Topic :: Database

Tags

data pipeline cli no codecopy database to databaseetl command line toolincremental data loadingdata ingestion without codemulti-source data syncdatabase migration tool
etl-clidata-migrationno-code

More Database packages