/pg_migrate

Manage postgres schema, triggers, procedures, and views

Primary LanguageCMIT LicenseMIT

pg_migrate
A lightweight utility to manage postgres schema, views, triggers, and functions.

-------------------
pg_migrate will recursively traverse a directory tree and run sql files postfixed with -up.sql or -down.sql. Down migrations are intended to rollback the operations defined in their up counterparts.


    Project/
	|--- views/
		|--- restaurants-up.sql
		|--- restaurants-down.sql
		|--- food/
	|--- triggers/
		|--- waitStaff-up.sql
		|--- waitStaff-down.sql
		|--- kitchenStaff-up.sql
		|--- kitchenStaff-down.sql


usage: pg_migrate -H postgres://URI [options]... dir

  -H   Host (in postgres URI format)
  -h   Show help text
  -v   Show version information
  -s   Show last 10 forward migrations ran
  -u   Migrate forward. Recursively traverses provided directory for -up.sql files
  -d   Migrate rollback. Will attempt to locate matching -down.sql files to migrate backwards
  -p   Soft run. Will display migrations to be ran / rolled back
  -g   Provisions the public schema with the pg_migrate table, used to track migrations


example usage:
> pg_migrate -H postgres://postgres:pass@localhost:5432 -p -d .
simulate an up migration for everything in this directory tree

Installation
-------------------

Download: https://github.com/jwdeitch/pg_migrate/releases/latest

** The release binaries are compiled against amd64 linux (ubuntu) and Apple OSX.

Before first migration, you must provision the database by running pg_migrate with the -g and -H flags. This is to create the "pgmigrate.manifest" table, which stores information about which migrations have been ran:
> pg_migrate -H postgres://postgres:pass@localhost:5432 -g

Notes
-------------------

- Files are transactional unless there are explicit transactions within. The migration will abort if any statement within the file fail.
- Corresponding up and down migrations must be in the same directory
- Migrations are ran in order of alphanumeric descending sort, starting with the topmost directory.