pg-schema-diff 开源项目教程
项目介绍
pg-schema-diff
是一个用于比较两个 PostgreSQL 数据库之间 schema 差异的开源工具。它能够生成 ALTER
语句,以便手动运行这些语句来使两个数据库的 schema 保持一致。该项目由 Stripe 维护,旨在帮助开发者轻松管理和同步数据库 schema。
项目快速启动
安装
首先,确保你已经安装了 Go 环境。然后,通过以下命令安装 pg-schema-diff
:
go install github.com/stripe/pg-schema-diff/cmd/pg-schema-diff
使用示例
- 创建 schema 文件夹并生成 SQL 文件:
mkdir schema
echo "CREATE TABLE foobar (id int)" > schema/foobar.sql
echo "CREATE TABLE bar (id varchar(255), message TEXT NOT NULL)" > schema/bar.sql
- 应用 schema 到新数据库:
pg-schema-diff apply --dsn "postgres://postgres:postgres@localhost:5432/postgres" --schema-dir schema
- 更新 schema:
echo "ALTER TABLE foobar ADD COLUMN created_at timestamp NOT NULL" >> schema/foobar.sql
pg-schema-diff apply --dsn "postgres://postgres:postgres@localhost:5432/postgres" --schema-dir schema
应用案例和最佳实践
应用案例
假设你有两个环境:开发环境和生产环境。你希望确保两个环境的 schema 保持一致。使用 pg-schema-diff
,你可以:
- 在开发环境中进行 schema 变更。
- 使用
pg-schema-diff
生成变更 SQL。 - 将生成的 SQL 应用到生产环境。
最佳实践
- 定期同步:定期使用
pg-schema-diff
检查和同步两个环境的 schema。 - 版本控制:将 schema 文件纳入版本控制系统,确保变更可追溯。
- 测试:在应用变更到生产环境之前,先在测试环境中进行验证。
典型生态项目
相关工具
- pgAdmin:一个功能强大的 PostgreSQL 管理和开发平台。
- Flyway:一个数据库迁移工具,支持版本控制和自动化迁移。
- Liquibase:另一个数据库重构和迁移工具,支持多种数据库。
集成示例
你可以将 pg-schema-diff
集成到 CI/CD 流程中,确保每次部署时 schema 的一致性。例如,在 Jenkins 或 GitLab CI 中配置一个任务,每次部署前运行 pg-schema-diff
检查和同步 schema。
通过这些工具和实践,你可以更有效地管理和同步 PostgreSQL 数据库的 schema,确保数据的一致性和可靠性。