Dafür brauchst Du keine spezielle Software sofern Dein USB Stick mit einem Dateisystem formatiert ist welches PG benutzen kann. Unter Windows bedeutet das, dass der Stick mit NTFS formatiert sein muss.
Ich mache das ganze (unter Windows) folgendermassen:
Ich lade mir die ZIP Distribution runter (EnterpriseDB: Download PostgreSQL Binaries)
Das ganze in ein Verzeichnis auspacken (wirklich benötigt werden nur die Unterverzeichnisse bin, lib und share)
In dem Verzeichnis kann man dann initdb manuell aufrufen und mit einer kleinen Batchdatei den Server mittels pg_ctl starten.
Die Batchdateien sind recht einfach:
initialize.cmd
set pgdir=%~dp0
set datadir=%pgdir%datadir
set bindir=%pgdir%server\bin
set pwfile=%pgdir%password_for_postgres_db_user.txt
echo Initializing data directory...
set lc_messages=English
echo postgres> %pwfile%
"%bindir%\initdb" -D "%datadir%" --lc-messages=English -U postgres --pwfile="%pwfile%" -E UTF8 -A md5 > initialize.log
Damit wird dann gleich der Benutzer “postgres” mit dem Passwort “secret” angelegt.
start_pg.cmd:
@echo off
setlocal
set pgdir=%~dp0
set datadir=%pgdir%datadir
set bindir=%pgdir%server\bin
set lc_messages=English
"%bindir%\pg_ctl.exe" -D "%datadir%" start
stop_pg.cmd
@echo off
setlocal
set pgdir=%~dp0
set datadir=%pgdir%datadir
set bindir=%pgdir%server\bin
set lc_messages=English
"%bindir%\pg_ctl.exe" -w -D "%datadir%" stop
Um das Ganze noch einfacher zu machen habe ich auch noch ein psql.cmd Datei die die entsprechenden Umgebungsvariablen setzt um psql direkt (ohne Eingabe von Benutzer/Passwort) starten zu können.
psql.cmd:
@echo off
setlocal
set PGHOST=localhost
set PGPORT=5432
set PGDATABASE=postgres
set PGUSER=postgres
set PGPASSWORD=secret
set LC_MESSAGES=English
chcp 1252 > nul 2>&1
"%~dp0\pg\server\bin\psql "
endlocal
Wenn Du das Ganze nicht unter Windows laufen lassen willst, musst Du halt aus den Batch-Dateien Shell-Skripte machen. Ich denke nicht, dass das schwierig ist.