Herramienta ligera de línea de comandos, independiente del framework, para gestionar migraciones de bases de datos en SQL entre equipos y entornos.
pressly/goose
CLI y biblioteca de Go para gestionar cambios en el esquema de bases de datos mediante archivos SQL versionados o funciones de Go.
- Estrellas
- 11,599
- Forks
- 719
- Issues abiertos
- 145
- Último commit
- hace 3 días
¿Qué es?
Goose es una herramienta de migración de bases de datos que puede usarse como programa de línea de comandos o importarse como biblioteca de Go. Gestiona los cambios en el esquema mediante migraciones incrementales, que pueden aplicarse en orden ascendente o revertirse en orden descendente, y registra en la base de datos qué versiones se han aplicado.
Las migraciones pueden escribirse como archivos SQL simples con anotaciones para las operaciones de subida y bajada, o como funciones de Go registradas en tu propio binario. Es compatible con varias bases de datos, como Postgres, MySQL, MariaDB, SQLite, Spanner, ClickHouse, MSSQL y Vertica. Además, los archivos de migración pueden incluirse en un binario de Go mediante el paquete embed. Entre otras funciones, admite la gestión de migraciones fuera de orden, la sustitución de variables de entorno en archivos SQL y un comando fix que convierte las migraciones con marcas de tiempo en una secuencia para producción.
Los drivers que no se utilicen pueden excluirse durante la compilación mediante build tags para generar un binario más pequeño.
Funciones clave
- 01Ejecuta migraciones SQL y migraciones implementadas con funciones de Go.
- 02Es compatible con Postgres, MySQL, MariaDB, SQLite, Spanner, ClickHouse, MSSQL y otras bases de datos.
- 03Incluye archivos de migración en binarios de Go mediante embed.FS.
- 04Admite migraciones fuera de orden y ofrece un comando fix para asignarles una numeración secuencial.
- 05Sustituye variables de entorno dentro de las migraciones SQL.
Casos de uso
- Versionar el esquema de un backend de Go que utiliza Postgres o MySQL.
- Distribuir las migraciones de bases de datos dentro de un único binario listo para desplegar.
- Ejecutar cambios en el esquema en CI para aplicar las migraciones de forma consistente en distintos entornos.
Inicio rápido
- 1
Instalar goose CLI con Go
go install github.com/pressly/goose/v3/cmd/goose@latest - 2
Consultar el estado de las migraciones en una base de datos SQLite
goose sqlite3 ./foo.db status - 3
Aplicar todas las migraciones disponibles
goose sqlite3 ./foo.db up
Antes de usarlo
- El README indica que cada comando de la CLI necesita un controlador de base de datos y una cadena de conexión, por lo que debes proporcionar tu propia base de datos.
- Se necesita Go para instalar la CLI mediante go install; Homebrew solo se ofrece a usuarios de macOS.
Temas
Preguntas frecuentes
- ¿Qué es goose?
- CLI y biblioteca de Go para gestionar cambios en el esquema de bases de datos mediante archivos SQL versionados o funciones de Go. Goose es una herramienta de migración de bases de datos que puede usarse como programa de línea de comandos o importarse como biblioteca de Go. Gestiona los cambios en el esquema mediante migraciones incrementales, que pueden aplicarse en orden ascendente o revertirse en orden descendente, y registra en la base de datos qué versiones se han aplicado.
- ¿goose es gratuito? ¿Qué licencia tiene?
- goose es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿goose sigue mantenido?
- Mantenimiento activo. El último commit de goose fue el 17 oct 2026.
- ¿Para qué puedo usar goose?
- Versionar el esquema de un backend de Go que utiliza Postgres o MySQL. Distribuir las migraciones de bases de datos dentro de un único binario listo para desplegar. Ejecutar cambios en el esquema en CI para aplicar las migraciones de forma consistente en distintos entornos.
- ¿Cómo se instala goose?
- Instalar goose CLI con Go: go install github.com/pressly/goose/v3/cmd/goose@latest Consultar el estado de las migraciones en una base de datos SQLite: goose sqlite3 ./foo.db status Aplicar todas las migraciones disponibles: goose sqlite3 ./foo.db up
- ¿Dónde consigo goose?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/pressly/goose
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Un ORM headless y ligero para TypeScript compatible con PostgreSQL, MySQL y SQLite, que funciona en Node.js, Bun, Deno y entornos edge.
Editor SQL y gestor de bases de datos multiplataforma para Linux, macOS y Windows, compatible con MySQL, PostgreSQL, SQLite, SQL Server y muchos más.
Herramienta full-stack para explorar bases de datos, diseñar, recorrer, documentar y analizar esquemas, con diagramas ERD para bases de datos grandes y desordenadas.
Cliente de bases de datos con IA y servidor MCP para escritorio y web, compatible con Postgres, MySQL, MariaDB, SQL Server, ClickHouse y SQLite.
Cliente SQL de escritorio gratuito y multiplataforma, y herramienta para bases de datos compatible con más de 100 bases mediante drivers JDBC y ODBC.