I’ve used liquibase for going the other direction: porting a mysql database to sqlserver. The trouble is that the ability to do a schema and data diff to move from one database to another isn’t the main purpose of liquibase, but rather a side effect of features in it, so it may not work as well as other tools would for that purpose. I definitely think learning liquibase is worth the learning curve to use it as your database change management tool going forward, and getting it to work for porting is a nice side effect, but that’s just me
The steps I did to move a database from mysql to sqlserver is:
- Use the generateChangeLog command with the DATA option to get a starting snapshot of the mysql database schema and data.
- Go through the generated changelog file and make necessary changes (data type changes due to better options, different view definition syntax, etc)
- Execute the changelog against sqlserver.
In general it worked well, although there was some manual changes I needed to make to the generated changelog. We were actually using it to support keeping a test dataset in mysql and exporting it to sqlserver, so it was a process we would run periodically, so we were able to script the required changelog changes.