Skip to content

Repository files navigation

transferred

Downloads Check Coverage PyPI Python wemake-python-styleguide License

transferred

The most convenient batch data transfer tool. Inspired by dlt.

transferred moves table data between systems. Blazing fast, no transformations supported — hand them over to your Data Warehouse.

Install

pip install transferred

Requires Python 3.14.

Usage

from pathlib import Path

from transferred import FilesDestination, Parquet, PostgresSource, Transfer

source = PostgresSource(
    "postgres://user:pass@localhost:5432/db",
    table="public.orders",
)
destination = FilesDestination(
    Path("orders/"),
    format=Parquet(compression="zstd"),
)

report = Transfer(source, destination).run()

print(report)
# RunReport:
#   rows: 10,000,000
#   written: 243.24 MiB
#   duration: 13s 700ms
#   written objects:
#     orders/part-00001.parquet

10M rows of 22 diverse columns including jsonb and PostGIS geometry — peaking at 414 MiB RAM, interpreter included.

Look at docs/DLT_COMPARISON.md for more performance insights.

More in examples/.

Supported

Sources:

  • Parquet file — FilesSource
  • Postgres table — PostgresSource
  • DataFrames — polars or pandas DataFrame, a duckdb result, a pa.Table, pyarrow's RecordBatch or RecordBatchReader
  • Python iterables of dict / @dataclass / pydantic.BaseModel (requires pip install transferred[iterable])

Destinations:

  • Parquet file — FilesDestination
  • Postgres table — PostgresDestination (full replace, swapped in one transaction)

BigQuery, S3/GCS and incremental loads land later. See PLAN.md.

Promises

  • Make data transfers as simple as it could be
  • Enforce best practices by default
  • Blazing fast
  • No OOMs!

License

MIT. See LICENSE.

About

The most convenient data transfer tool

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages