Postgres SQL Portable gesucht

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.