零代码、单命令:ingestr —— 让数据迁移像复制粘贴一样简单

零代码、单命令:ingestr —— 让数据迁移像复制粘贴一样简单

在数据驱动的时代,数据迁移和集成几乎是每个开发者和数据团队都会遇到的日常任务。无论是将生产数据库同步到数据仓库,还是在不同系统之间搬运数据,传统方案往往意味着编写大量代码、配置复杂的ETL工具,或者支付昂贵的SaaS费用。

今天要介绍的开源工具ingestr,正是为了解决这个痛点而生。

什么是 ingestr?

ingestr 是一个命令行工具,允许你用单行命令将数据从任何数据源复制到任何目标,无需编写任何代码。

它的核心理念极其简单:指定一个来源、指定一个目标,剩下的交给 ingestr。

ingestr ingest\--source-uri'postgresql://...'\--source-table'public.some_data'\--dest-uri'bigquery://...'\--dest-table'ingestr.some_data'

就这么简单。一行命令,数据就从 PostgreSQL 飞到了 BigQuery。

为什么需要 ingestr?

在 ingestr 出现之前,数据 ingestion 领域的工具生态存在明显的空白:

  • 付费工具大多以 UI 驱动,UI 驱动的工作流对自动化数据管道很不友好。
  • 开源替代品(如 Airbyte)同样以 UI 为主,而且还需要自己维护一套基础设施。
  • 库级别的方案(如 dlt)虽然灵活,但最终你还是得写代码来搞定 ingestion。

ingestr 的团队在 2024 年初开始构建这个项目,目标是打造一个有主见的、最简单的数据摄入方式。你只需要告诉它源和目标在哪里,它就会帮你把数据搬过去。

事实证明这个方向是对的——ingestr 目前已经在 GitHub 上收获了超过 3,700 颗星,被数百个组织内部使用。

核心特性

✨ 零代码,单命令

ingestr 最核心的价值就是零代码。你不需要写 Python 脚本、不需要配置 YAML 文件、不需要学习复杂的 DSL。只需要一条命令,数据就能从源端流向目标端。

➕ 增量加载

ingestr 支持三种增量加载模式:

  • Append:追加新数据
  • Merge:合并更新
  • Delete+Insert:删除后插入

这意味着你不需要每次都全量同步整个表,只需摄入新增或变更的数据,大幅提升效率并降低成本。

🐍 单命令安装

安装 ingestr 非常简单。推荐使用 uv:

pipinstalluv uvx ingestr

或者全局安装:

uv pipinstall--systemingestr

传统的 pip 安装也可以,但速度会慢一个数量级。

🐍 Python SDK

除了命令行,ingestr 还提供了 Python SDK,可以直接在 Python 代码中调用:

importingestr ingestr.ingest([{"id":1,"name":"Ada"},{"id":2,"name":"Grace"}],dest_uri="duckdb:///tmp/warehouse.duckdb",dest_table="main.people",)

支持 pandas DataFrame、Polars DataFrame、PyArrow Table 等多种数据格式,数据通过 Arrow IPC 流高效传输。

从 Python 到 Go:性能的重构

ingestr 最初是用 Python 构建的,原型只花了一个周末就做出来了。但随着用户规模的增长和数据集变大,Python 版本的性能瓶颈逐渐显现:

  • Python 本身在处理大量数据时速度有限。
  • 底层依赖的 dlt 在早期版本中性能也不够理想。

因此,ingestr 团队决定从零开始用 Go 重构,目标是打造更快、更可靠、更好用的数据摄入工具。重构后的 v1 版本在性能和可靠性上都有了质的飞跃。

支持的生态

ingestr 支持极为丰富的数据源和目标:

数据库:PostgreSQL、MySQL、SQL Server、BigQuery、Snowflake、Redshift、DuckDB、ClickHouse、MongoDB、Oracle、SQLite、Trino 等 20 多种。

对象存储与文件:S3、GCS、本地 CSV、JSONL、Parquet 等。

SaaS 平台:GitHub、Salesforce、Shopify、Slack、Stripe、Notion、Google Sheets、HubSpot、Zendesk 等数十个平台。

消息队列:Kafka、Kinesis 等。

无论是传统关系型数据库、云数据仓库,还是现代 SaaS 应用,ingestr 基本都能覆盖。

典型使用场景

ingestr 可以解决多种数据迁移和集成需求:

  • 从遗留系统迁移到现代数据库,提升分析能力
  • 将应用数据库与数据分析平台同步,支持批量或增量同步
  • 数据库备份,确保数据安全
  • 快速搭建测试或开发环境,轻松克隆现有数据库
  • 支持需要实时数据更新的应用场景

由于 ingestr 是轻量级的 CLI 工具,你可以轻松地把它放进cronjob、GitHub Actions、Airflow或其他调度器中,快速获得内置的数据摄入能力。

总结

ingestr 是一款理念清晰、使用简单、生态丰富的开源数据摄入工具。它用最朴素的方式——一条命令——解决了数据迁移中最常见的问题。

如果你正在寻找一个零代码、轻量级、可自动化的数据迁移方案,ingestr 值得一试。

  • GitHub:https://github.com/bruin-data/ingestr
  • 文档:https://bruin-data.github.io/ingestr/
  • 社区:Bruin Data Community Slack