# Dependencies: pg-loader, postgres client tools install-tools-macos: brew install pgloader brew install libpq install-tools-linux: sudo apt install pgloader sudo apt install postgresql-client run-docker: docker run -d --rm --name postgres -e POSTGRES_USER=user -e POSTGRES_PASSWORD=pass -p 6432:6432 postgres:alpine # Max performance for unit tests. run-docker-unit-test-only: docker run -d --rm --name postgres -e POSTGRES_USER=user -e POSTGRES_PASSWORD=pass \ --tmpfs /var/lib/postgresql/data:rw,noexec,nosuid,size=2G \ -p 6432:6432 postgres:alpine \ -c fsync=off \ -c synchronous_commit=off \ -c full_page_writes=off \ -c wal_level=minimal \ -c max_wal_senders=0 \ -c archive_mode=off \ -c shared_buffers=256MB \ -c max_wal_size=512MB \ -c checkpoint_timeout=30min \ -c logging_collector=off \ -c log_statement=none \ -c jit=off \ -c track_counts=off \ -c autovacuum=off dump-db: # 1. Convert `data.db` to `data.sqlite-dump.sql` and `data.pg-dump.sql` sqlite3 data.db .dump > data.sqlite-dump.sql -PGPASSWORD=pass dropdb -h 127.0.0.1 -U user pb-data PGPASSWORD=pass createdb -h 127.0.0.1 -U user pb-data -pgloader --with "preserve index names" sqlite://$$(pwd)/data.db pgsql://user:pass@127.0.0.1/pb-data docker exec -it postgres pg_dump -U user -h 127.0.0.1 pb-data > data.pg-dump.sql # 2. Convert `auxiliary.db` to `auxiliary.sqlite-dump.sql` and `auxiliary.pg-dump.sql` sqlite3 auxiliary.db .dump > auxiliary.sqlite-dump.sql -PGPASSWORD=pass dropdb -h 127.0.0.1 -U user pb-auxiliary PGPASSWORD=pass createdb -h 127.0.0.1 -U user pb-auxiliary -pgloader --with "preserve index names" sqlite://$$(pwd)/auxiliary.db pgsql://user:pass@127.0.0.1/pb-auxiliary docker exec -it postgres pg_dump -U user -h 127.0.0.1 pb-auxiliary > auxiliary.pg-dump.sql PREFIX=pb_test_ drop-matching-dbs: @echo "Looking for databases starting with $(PREFIX)..." @PGPASSWORD=pass psql -h 127.0.0.1 -U user -d postgres -t -c "SELECT datname FROM pg_database WHERE datname LIKE '$(PREFIX)%'" | \ while read dbname; do \ dbname=$$(echo $$dbname | xargs); \ if [ ! -z "$$dbname" ]; then \ echo "Dropping database: $$dbname"; \ PGPASSWORD=pass psql -h 127.0.0.1 -U user -d postgres -c "DROP DATABASE \"$$dbname\""; \ fi; \ done