このプロジェクトについて
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パッケージを使用してバイナリに埋め込むことができます。シードデータと埋め込みマイグレーションもサポートされています。
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.