Flywayes una herramienta open-source para migrar entre base de datos.
Es una herramienta muy sencilla de usar que puede usars desde línea de comandos, desde su API Java, o desde Maven y Graddle.
Además ofrece Plugins para herramientas como Spring Boot, Grails, Paly, SBT, Grunt,…
Soporta un gran número de bases de datos: Oracle, SQL Server (including Amazon RDS and Azure SQL Database, DB2, MySQL (including Amazon RDS, Azure Database & Google Cloud SQL), MariaDB, PostgreSQL (including Amazon RDS, Azure Database, Google Cloud SQL & Heroku),Redshift, CockroachDB, SAP HANA, Sybase ASE, H2, HSQLDB, Derby and SQLite.
Sus comandos son: Migrate, Clean, Info, Validate, Undo, Baseline and Repair.
Veamos cómo se usa desde línea de comandos:
Una vez descargada y descomprimida la herramienta (descargar) configuraré el fichero %FLYWAY%/conf/flyway.conf por ejemplo:
En el directorio %FLYWAY%/sql/ crearé un SQL (V1__Create_person_table.sql) (prefijo V1__)
Y desde %FLYWAY%/ ejecutaré >flyway migrate
Si todo ha ido bien veré:
Flyway crea una tabla flyway_schema_history en la que va almacenando el historial de migraciones, por tanto sabe los scripts que he ejecutado (aquí se explica su funcionamiento: https://flywaydb.org/getstarted/how).
Tras esto podría hacer una segunda migración, en este caso haré los INSERTs:, al directorio /sql le añado el fichero V2__Add_people.sql
: (fijaos en el prefjjo V2__)
Y ejecuto:
Flyway detecta que el segundo script no se ha lanzado y lo ejecuta:
También puedo ejecutar flyway info que me da info sobre el estado de la migración:
Con Flyway también puedo hacer UNDO de migraciones, para esto crearé un fichero con el prefijo U (+ el número de la versión a la que hacer UNDO)__
En el ejemplo previo:
U2__Add_people.sql: DELETE FROM PERSON;
Y
U1__Create_person_table.sql: DROPTABLEPERSON;
Para lanzar el UNDO >flyway undo
que como resultado da:
Y con el info:
Flyway también puede usarse desde Maven:
Primero configuraré el plugin de Maven:
En este caso crearé un directorio src/main/resources/db/migration
donde iré poniendo mis scripts (src/main/resources/db/migration/V1__Create_person_table.sql)
Lo ejecutaré con:
Flyway tiene 3 versiones, una Community con licencia Apache2 y 2 comerciales:
[…] https://unpocodejava.com/2018/01/02/que-es-flyway/ […]