Migratus takes care of loading specified sql files in a particular order, and provides Clojure bindings to run/create said files. It takes an init file, run at the start to set up your schemas, then runs all the up and down migrations in numerical-sort order, where the recommended numeral is something like the Unix timestamp.
So it runs any number of SQL things on your database, and does it in the right order. It also supports knowing which ones have already been run, and being able to back-track them. So it's all about batching and ordering, with some features (which, I'm ashamed to admit I've never used) for versioning your database.