如何将 dbmate 添加到现有项目?

How to add dbmate to existing project?

dbmate (link) 是一个很棒的 CLI 工具,用于管理 SQL 数据库中的模式迁移。我们的团队采用了它,但我们有一些已有的项目已经拥有 PostgreSQL 数据库。如果从项目一开始就使用 dbmate 就很棒,但是有什么直接的方法可以将预先存在的数据库移植到 dbmate 中吗?在文档中找不到任何相关信息。

我们有像 DataGrip/PyCharm pro 这样的 JetBrains 工具,所以如果有某种方法可以将数据库导出到一个模式文件中,那么 dbmate 可以以某种方式管理,即使是 hacky,该解决方案就好了。

您可以 运行 dbmate dump 获取现有架构并将其添加到“假”迁移中。方法如下:

  1. 运行 dbmate dump 将生成 db/schema.sql - 将其重命名为 import.sql
  2. 运行 dbmate new import 将生成“导入”迁移
  3. 运行 dbmate new start 将生成“开始”迁移
  4. 将您喜欢的任何内容添加到“开始”迁移或将其留空
  5. 运行 dbmate up
  6. 如有必要修改import.sql,然后将其内容移动到“导入”迁移

现在 dbmate“光标”位于“开始”迁移上,就好像“导入”迁移已经发生一样。您可以继续在现有架构之上进行新的迁移。

这也是一个question on dbmate's GitHub issue tracker