db-ferry

跨数据库数据迁移工具

Go CLI 工具,通过声明式 task.toml 配置,在 Oracle、MySQL、PostgreSQL、SQL Server、SQLite 和 DuckDB 之间批量迁移数据。

npm install db-ferry GitHub Repo

特性

简洁高效的数据库迁移体验

🔌

多数据库支持

连接 6 种主流数据库,灵活配置源和目标。

Oracle MySQL PostgreSQL SQL Server SQLite DuckDB
📋

声明式配置

一个 task.toml 文件定义所有数据库和迁移任务。

[[tasks]] table_name = "employees" sql = "SELECT * FROM employees" source_db = "oracle_hr" target_db = "sqlite_local"
🏗️

自动建表

根据源表元数据自动生成目标表 DDL,无需手动创建表结构。

批量流式传输

分批插入、事务保证、实时进度条,高效处理大量数据。

🔄

增量迁移

通过 resume_keystate_file 实现断点续传。

resume_key = "id" resume_from = "1000000" state_file = "state.json"
🖥️

全平台支持

通过 npm 安装,支持 macOS、Linux 和 Windows。


快速开始

三步开始跨数据库数据迁移

1

安装

选择你喜欢的包管理器全局安装,或无需安装直接运行。

npm install -g db-ferry
pnpm add -g db-ferry
bun add -g db-ferry
npx db-ferry
bunx db-ferry
2

初始化配置

生成示例 task.toml 配置文件。

db-ferry config init

# 生成 task.toml,编辑后填入你的数据库连接信息
3

运行迁移

执行配置文件中的所有迁移任务。

db-ferry

# 指定配置文件
db-ferry -config ./configs/task.toml

# 详细日志
db-ferry -v

支持的数据库

在以下数据库之间自由迁移数据

ORA
Oracle
MySQL
MySQL
PG
PostgreSQL
MSS
SQL Server
SQLite
SQLite
Duck
DuckDB

Skills 集成

为 AI 助手注入 db-ferry 的迁移能力

🧠

什么是 Skills?

Skills 是 AI 助手的技能扩展包。安装后,AI 能直接理解 db-ferry 的配置语法、命令用法和最佳实践,无需反复查阅文档。

为什么需要?

更准:AI 掌握精确的 task.toml 字段和类型,不会生成错误配置。
更快:直接给出可用的迁移命令和配置片段。
更全:内置支持的数据库列表、连接串格式、增量迁移等高级用法。

安装方式

npx skills add xingkaixin/db-ferry
bunx skills add xingkaixin/db-ferry

安装后,在任何 AI 对话中直接描述你的迁移需求即可。