这个项目能做什么
Goose 是一款数据库迁移工具,以命令行界面和 Go 库两种形式分发。它通过以 SQL 或 Go 函数编写的增量迁移文件来管理数据库模式的演进。
支持的数据库包括 Postgres、MySQL、MariaDB、Spanner、SQLite、YDB、ClickHouse、MSSQL、Vertica、Redshift、TiDB、StarRocks、Turso 和 Azure SQL。可以通过构建标签排除不需要的驱动来精简二进制文件。
可通过 `go install`、macOS 上的 Homebrew 或自定义构建进行安装。配置可以作为命令参数传入,也可以通过环境变量传入,例如 GOOSE_DRIVER、GOOSE_DBSTRING、GOOSE_MIGRATION_DIR 和 GOOSE_TABLE,还支持从 `.env` 文件加载。
CLI 提供了用于创建迁移(`create`)、应用迁移(`up`、`up-by-one`、`up-to`)、回滚(`down`、`down-to`、`reset`、`redo`)、检查状态(`status`、`version`)以及验证文件(`validate`、`fix`)的命令。`-allow-missing` 标志可启用乱序迁移,对于团队工作流,推荐采用将时间戳与顺序编号相结合的混合版本管理方式。
SQL 迁移使用诸如 `-- +goose Up` 和 `-- +goose Down` 之类的注解,并可选使用 `NO TRANSACTION` 以及 `StatementBegin`/`StatementEnd` 标记来处理复杂语句。可以通过 `ENVSUB ON`/`ENVSUB OFF` 为每个文件启用环境变量替换。Go 迁移通过 `goose.AddMigration` 注册,并可以使用 Go 的 embed 包嵌入到二进制文件中。还支持种子数据和嵌入式迁移。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。