// the find
Snowflake-Labs/schemachange
A Database Change Management tool for Snowflake
schemachange is a Flyway-style imperative database migration tool built specifically for Snowflake. It tracks applied SQL scripts in a change history table and runs them in version order. If you're doing DataOps on Snowflake and want git-based schema migrations with CI/CD hooks, this is the obvious starting point.
Jinja templating for environment-specific deployments (dev/test/prod from the same scripts) is well-thought-out, including secret redaction so variables tagged as secrets don't leak to logs. The addition of CLI migration scripts (.cli.yml) for deploying dbt projects or Snowpark functions alongside SQL migrations is a practical solution to a real gap. Config version 2 cleanly separates schemachange config from Snowflake connector parameters, which makes YAML files readable rather than a flat grab-bag. The authentication section is honest about Snowflake's current restrictions — service accounts can't use password auth, and PAT is the pragmatic replacement.
It's tightly coupled to Snowflake — there's no abstraction layer and zero portability if your data platform changes. The 'Always' script type (A__ prefix, runs every deployment) is easy to misuse and can silently cause performance problems in large pipelines if teams start stuffing non-idempotent cleanup scripts there. The `execute_string()` method splits on semicolons client-side, which breaks Snowflake Scripting `BEGIN...END` blocks — this is a significant footgun for anyone writing stored procedures in migrations, and the workaround (EXECUTE IMMEDIATE with dollar-sign quoting) isn't obvious from the naming convention alone. At 666 stars, the community is real but small; you're one niche Snowflake behaviour away from having to fix it yourself.