Repolode
pressly

pressly/goose

バージョン管理されたSQLファイルやGo関数でデータベースのスキーマ変更を管理するCLI兼Goライブラリ。

スター
11,599
フォーク
719
未解決の Issue
145
最終コミット
3 日前

これは何?

Gooseは、コマンドラインプログラムとしてもGoライブラリとしても使えるデータベースマイグレーションツールです。スキーマ変更を段階的なマイグレーションとして管理し、それぞれを適用して前進させたり、ロールバックして戻したりできます。また、適用済みのバージョンをデータベースに記録します。

マイグレーションは、upとdownの注釈を付けたプレーンなSQLファイル、または独自のバイナリに登録したGo関数で記述できます。Postgres、MySQL、MariaDB、SQLite、Spanner、ClickHouse、MSSQL、Verticaなど、さまざまなデータベースに対応しています。embedパッケージを使って、マイグレーションファイルをGoバイナリに埋め込むこともできます。そのほか、順不同のマイグレーションへの対応、SQLファイル内の環境変数の置換、本番環境向けにタイムスタンプ形式のマイグレーションを連番に変換するfixコマンドなどの機能があります。

ビルドタグを使って未使用のドライバーをビルド時に除外し、バイナリのサイズを小さくできます。

主な機能

  • 01SQLマイグレーションとGo関数によるマイグレーションを実行できます。
  • 02Postgres、MySQL、MariaDB、SQLite、Spanner、ClickHouse、MSSQLなどに対応しています。
  • 03embed.FSを使って、マイグレーションファイルをGoバイナリに埋め込めます。
  • 04順不同のマイグレーションに対応し、連番に修正するfixコマンドも備えています。
  • 05SQLマイグレーション内の環境変数を置換できます。

ユースケース

  • PostgresやMySQLを使うGoバックエンドのスキーマをバージョン管理する。
  • データベースのマイグレーションを、単一のデプロイ可能なバイナリに含める。
  • CIでスキーマ変更を実行し、環境間で一貫してマイグレーションを適用する。

クイックスタート

  1. 1

    Goでgoose CLIをインストールする

    go install github.com/pressly/goose/v3/cmd/goose@latest
  2. 2

    SQLiteデータベースに対するマイグレーションの状態を確認する

    goose sqlite3 ./foo.db status
  3. 3

    利用可能なマイグレーションをすべて適用する

    goose sqlite3 ./foo.db up

使う前に知っておきたいこと

  • READMEによると、CLIの各コマンドにはデータベースドライバーと接続文字列が必要なため、データベースは自分で用意する必要があります。
  • go installでCLIをインストールするにはGoが必要です。HomebrewはmacOSユーザー向けにのみ提供されています。

トピック

よくある質問

goose とは?
バージョン管理されたSQLファイルやGo関数でデータベースのスキーマ変更を管理するCLI兼Goライブラリ。 Gooseは、コマンドラインプログラムとしてもGoライブラリとしても使えるデータベースマイグレーションツールです。スキーマ変更を段階的なマイグレーションとして管理し、それぞれを適用して前進させたり、ロールバックして戻したりできます。また、適用済みのバージョンをデータベースに記録します。
goose は無料で使えますか?ライセンスは?
goose は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
goose は今もメンテナンスされていますか?
活発にメンテナンス中。goose の最終コミットは 2026年10月17日 です。
goose は何に使えますか?
PostgresやMySQLを使うGoバックエンドのスキーマをバージョン管理する。 データベースのマイグレーションを、単一のデプロイ可能なバイナリに含める。 CIでスキーマ変更を実行し、環境間で一貫してマイグレーションを適用する。
goose のインストール方法は?
Goでgoose CLIをインストールする: go install github.com/pressly/goose/v3/cmd/goose@latest SQLiteデータベースに対するマイグレーションの状態を確認する: goose sqlite3 ./foo.db status 利用可能なマイグレーションをすべて適用する: goose sqlite3 ./foo.db up
goose はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/pressly/goose

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト