Files
2026-07-13 12:31:02 +08:00

61 lines
2.2 KiB
Makefile

# 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