Uma ferramenta de linha de comando leve e independente de frameworks para gerenciar migrações de banco de dados em SQL puro entre equipes e ambientes.
pressly/goose
CLI e biblioteca Go para gerenciar alterações no schema do banco de dados com arquivos SQL versionados ou funções Go.
- Estrelas
- 11,599
- Forks
- 719
- Issues abertas
- 145
- Último commit
- há 3 dias
O que é?
Goose é uma ferramenta de migração de banco de dados que pode ser usada como programa de linha de comando ou importada como biblioteca Go. Ela gerencia alterações no schema como migrações incrementais, que podem ser aplicadas para avançar ou revertidas para voltar, e registra no banco de dados quais versões já foram aplicadas.
As migrações podem ser escritas como arquivos SQL simples com anotações de up e down ou como funções Go registradas no seu próprio binário. A ferramenta oferece suporte a vários bancos de dados, incluindo Postgres, MySQL, MariaDB, SQLite, Spanner, ClickHouse, MSSQL e Vertica. Também é possível incorporar os arquivos de migração a um binário Go usando o pacote embed. Outros recursos incluem o tratamento de migrações fora de ordem, a substituição de variáveis de ambiente em arquivos SQL e um comando fix que converte migrações com timestamp em uma sequência numérica para produção.
É possível excluir drivers não utilizados no momento da compilação usando build tags, para gerar um binário menor.
Recursos principais
- 01Executa migrações SQL e migrações escritas como funções Go.
- 02Oferece suporte a Postgres, MySQL, MariaDB, SQLite, Spanner, ClickHouse, MSSQL e outros bancos de dados.
- 03Incorpora arquivos de migração a binários Go usando embed.FS.
- 04Oferece suporte a migrações fora de ordem e a um comando fix para numerá-las em sequência.
- 05Substitui variáveis de ambiente dentro de migrações SQL.
Casos de uso
- Versionar o schema de um backend Go que usa Postgres ou MySQL.
- Distribuir migrações de banco de dados dentro de um único binário implantável.
- Executar alterações no schema em CI para aplicar migrações de forma consistente entre ambientes.
Início rápido
- 1
Instalar o goose CLI com Go
go install github.com/pressly/goose/v3/cmd/goose@latest - 2
Verificar o status das migrações em um banco de dados SQLite
goose sqlite3 ./foo.db status - 3
Aplicar todas as migrações disponíveis
goose sqlite3 ./foo.db up
Antes de usar
- O README informa que cada comando da CLI precisa de um driver de banco de dados e de uma string de conexão; portanto, você deve fornecer seu próprio banco de dados.
- É necessário ter Go para instalar a CLI via go install; o Homebrew é oferecido apenas para usuários do macOS.
Tópicos
Perguntas frequentes
- O que é goose?
- CLI e biblioteca Go para gerenciar alterações no schema do banco de dados com arquivos SQL versionados ou funções Go. Goose é uma ferramenta de migração de banco de dados que pode ser usada como programa de linha de comando ou importada como biblioteca Go. Ela gerencia alterações no schema como migrações incrementais, que podem ser aplicadas para avançar ou revertidas para voltar, e registra no banco de dados quais versões já foram aplicadas.
- goose é gratuito? Qual é a licença?
- goose é open source sob a licença Other. Confira os termos da licença antes de usá-lo em produtos comerciais.
- goose ainda é mantido?
- Manutenção ativa. O último commit de goose foi em 17 de out. de 2026.
- Para que posso usar goose?
- Versionar o schema de um backend Go que usa Postgres ou MySQL. Distribuir migrações de banco de dados dentro de um único binário implantável. Executar alterações no schema em CI para aplicar migrações de forma consistente entre ambientes.
- Como instalar goose?
- Instalar o goose CLI com Go: go install github.com/pressly/goose/v3/cmd/goose@latest Verificar o status das migrações em um banco de dados SQLite: goose sqlite3 ./foo.db status Aplicar todas as migrações disponíveis: goose sqlite3 ./foo.db up
- Onde consigo goose?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/pressly/goose
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
ORM headless e leve para TypeScript, compatível com PostgreSQL, MySQL e SQLite em Node.js, Bun, Deno e runtimes edge.
Editor SQL e gerenciador de bancos de dados multiplataforma para Linux, macOS e Windows, com suporte a MySQL, PostgreSQL, SQLite, SQL Server e muitos outros.
Ferramenta full-stack para explorar, projetar, navegar, documentar e analisar schemas de bancos de dados, com diagramas ERD para bancos grandes e complexos.
Cliente de banco de dados com IA e servidor MCP para desktop e web, compatível com Postgres, MySQL, MariaDB, SQL Server, ClickHouse e SQLite.
Cliente SQL desktop gratuito e multiplataforma, com ferramentas para bancos de dados e suporte a mais de 100 bancos via drivers JDBC e ODBC.