brauche ein auf USB-Stick lauffähiges PostgresSQL und kam durch googlen auf folgenden Link: http://greg.webhop.net/postgresql_portable/
Leider scheint da kein Download mehr möglich. Kennt jemand einen anderen Link oder kann mir sonst irgendwie weiterhelfen?
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.
Nach dem initdb muss halt die entsprechenden Funktionen/Module registrieren werden (über das mitgelieferte SQL Script). Das muss ja auch nur einmal gemacht werden.
Dann musst Du natürlich auch dafür sorgen, dass die dafür benötigten DLL/Libraries verfügbar sind.
Ich habe das nicht probiert, aber wenn die im lib Verzeichnis liegen, dann müsste das eigentlich reichen.
Hi castorp,
Mein 1. Beitrag in diesem Forum - bin seit gestern auch “Postgres’er”.
Danke für Deinen Hinweis auf die “Portable Version”.
In Deinen Batchdateien stecken allerdings ein paar kleine Fehler. Da Dein Beitrag noch nicht sehr alt ist, lohnen sich diese Hinweise, denke ich.
datadir
muss angelegt bzw. angepasst werden
set bindir=%pgdir%server\bin
den Pfad gibt es nicht - soll sicher heissen:
set bindir=%pgdir%bin
Du initialisierst mit dem Password “postgres”, als Password nimmste aber später “secret”
Und diese Zeile war mir auch ein Rätsel:
"%~dp0\pg\server\bin\psql "
Meinst Du:
“%~dp0bin\psql.exe”
Sicher, oder?
Bitte nicht als meckern auffassen - alles bezieht sich auf den von Dir angegebenen DL, entpackt und im Verzeichnis “pgsql” angelegte Bachtdateien …
Meine eigentlichen Dateien sind ein ganzes Stück umfangreicher. Ich hatte versucht das im Posting auf das nötigste zu beschränken, kann leicht sein, dass mir dabei ein paar Fehler unterlaufen sind
set bindir=%pgdir%server\bin
den Pfad gibt es nicht - soll sicher heissen:
set bindir=%pgdir%bin
Doch, den Pfad gibt es bei mir, weil ich das Archiv immer in das Unterverzeichnis “server” entpacke.
Und diese Zeile war mir auch ein Rätsel:
"%~dp0\pg\server\bin\psql "
Meinst Du:
“%~dp0bin\psql.exe”
Sicher, oder?
Eigentlich meinte ich %~dp0server\bin\psql
Bitte nicht als meckern auffassen
Kein Problem, hilft sicherlich anderen die das hier auch verwenden
Wie gesagt: meine Batchdateien sehen sowieso anders aus
Aber es freut mich wenn es Dir geholfen hat (trotz der Copy & Paste Fehler)