チームや環境をまたいでSQLデータベースのマイグレーションを管理する、軽量でフレームワークに依存しないCLIツール。
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
Goでgoose CLIをインストールする
go install github.com/pressly/goose/v3/cmd/goose@latest - 2
SQLiteデータベースに対するマイグレーションの状態を確認する
goose sqlite3 ./foo.db status - 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 の数値は毎日更新されます。
関連プロジェクト
Node.js、Bun、Deno、エッジランタイムで使える、PostgreSQL・MySQL・SQLite対応の軽量なヘッドレスTypeScript ORM。
Linux、macOS、Windows対応のクロスプラットフォームSQLエディター兼データベース管理ツール
大規模で複雑なデータベース向けに、スキーマの設計・探索・文書化・分析ができるフルスタックツール
Postgres、MySQL、MariaDB、SQL Server、ClickHouse、SQLiteに対応した、デスクトップ・Web向けのAI搭載データベースクライアント兼MCPサーバー。
JDBCおよびODBCドライバー経由で100種類以上のデータベースに接続できる、無料のマルチプラットフォーム対応デスクトップSQLクライアント兼データベースツール。