diff --git a/postgresql/Makefile b/postgresql/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..a5529f203f4a70dd63fd127f21c68079ebc87013
--- /dev/null
+++ b/postgresql/Makefile
@@ -0,0 +1,14 @@
+TEST_HOST ?= 127.0.0.1
+
+build:
+	go build && go install
+
+reset-db:
+	$(MAKE) -C _dumps
+
+test: reset-db
+	go test -v
+	$(MAKE) -C _example
+
+bench: reset-db
+	go test -v -test.bench=.
diff --git a/postgresql/_dumps/Makefile b/postgresql/_dumps/Makefile
index 73176203e9fc49f610fec31b5916edf2608ff6c8..64253b53fa959f01a287c125e97699530cb2ceda 100644
--- a/postgresql/_dumps/Makefile
+++ b/postgresql/_dumps/Makefile
@@ -5,5 +5,5 @@ DB_USERNAME ?= upperio_tests
 DB_PASSWORD ?= upperio_secret
 DB_NAME     ?= upperio_tests
 
-load:
+reset-db:
 	cat structs.sql | PGPASSWORD="$(DB_PASSWORD)" psql -U$(DB_USERNAME) $(DB_NAME) -h$(TEST_HOST) -p$(TEST_PORT)
diff --git a/postgresql/_example/Makefile b/postgresql/_example/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..438918e4af0ddfa017e4808a89d97ab3e3642d89
--- /dev/null
+++ b/postgresql/_example/Makefile
@@ -0,0 +1,10 @@
+TEST_HOST   ?= 127.0.0.1
+TEST_PORT   ?= 5432
+
+DB_USERNAME ?= upperio_tests
+DB_PASSWORD ?= upperio_secret
+DB_NAME     ?= upperio_tests
+
+test:
+	cat example.sql | PGPASSWORD="$(DB_PASSWORD)" psql -U$(DB_USERNAME) $(DB_NAME) -h$(TEST_HOST) -p$(TEST_PORT)
+	go run -v main.go
diff --git a/postgresql/_example/test.sh b/postgresql/_example/test.sh
deleted file mode 100755
index 30b51db9edf188b4e0158e3aceb985f497f69601..0000000000000000000000000000000000000000
--- a/postgresql/_example/test.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-cat example.sql | PGPASSWORD=upperio psql -Uupperio upperio_tests -htestserver.local
-go run main.go