Datenbank Speicherort

Hallo,

ich habe folgendes Problem. Ich will mit dem Verbindungsmanager von der SQL Integration Services auf eine postgreSQL Datenbank zugreifen.

Dafür braucht er aber den Server: bei mir localhost
und den Speicherort.
In welchem Ordner werden die Datenbanken abgelegt?

Vielen Dank für die Hilfe im voraus.


Stephan

Ich bezweifle erheblich, daß Du den ‘Speicherordner’ angeben willst/mußt.

Ansonsten: das zeigt Dir folgender Befehl in psql an:

show data_directory;

Aber, wie gesagt, das brauchst Du ganz sicher nirgends anzugeben, da es Aufgabe der DB ist, und nur der DB, sich um die physische Speicherung der ihr anvertrauten Daten zu kümmern.

Andreas

Ich will ja auch die Daten, die in dieser Datenbank drin stehen auslesen mit den MS Integration Services und da muß ich den Server und den Speicherort angeben, wenn ich den Treiber für postgrsql anklicke.

Ohne das von Dir genannte Produkt zu kennen bin ich fest überzeugt, daß Deine Aussage flasch ist. Warum auch immer. PostgreSQL hat Programmierschnittstellen, z.B. ODBC und JDBC, um mal 2 zu nennen, es gibt mehr. Aber exakt keine dieser Schnittstellen interessiert sich um die physikalische Ablage der Daten.

Machen wir mal ein Gedankenexperiment: Du definierst 3 Tablespaces zur Ablage Deiner Tabellen. Welchen Ordner willst Du nun angeben?
Wenn Du Zugriff auf das Filesystem haben willst, auf dem die Daten liegen, dann schau hier:

# The default values of these variables are driven from the -D command line
# switch or PGDATA environment variable, represented here as ConfigDir.
#data_directory = 'ConfigDir'           # use data in another directory

Wenn Du nun mit einer Fremdanwendung die dort befindlichen Daten beim Betrieb des Servers ausliest, hast Du zu hoher Wahrscheinlichkeit Müll, selbst wenn es der Anwendung gelingen sollte, das Speicherformat incl. Dingen wie TOAST richtig zu lesen. Weil die DB auch oft da rein schreibt und Du respektive Deine Anwendung gar nicht wissen kann, was PG grad zu tun gedenkt.

Will sagen: selbst wenn Du z.B. im laufenden Betrieb ohne spezielle Vorkehrungen das komplett wegspeicherst, wird es Dir höchstwahrscheinlich nicht gelingen, daraus auf einem anderen Rechner wieder diese DB zum laufen zu bekommen, weil die Daten inkonsistent wären.

Von Schreibzugriffen anderer Anwendungen auf die Daten will ich gar nicht erst albträumen…

Der einzigste Fall, wo Du das vielleicht in der Tat wissen müßtest, wären maximal Backup-Tools.
Handelt es sich bei Deinem Produkt um sowas?




Andreas

Hallo,

bei diesem Programm handelt es sich um den Verbindungsmanager vom SQL Server 2005(Integration Services) leider kann ich hier keinen Screen einfügen.

Es gibt 2 Zeilen die man ausfüllen muß,

  1. Server- oder Dateiname:
  2. Speicherort:

Der OLE-DB Anbieter PostgreSQL OLE DB Provider.

Eine Access DB wird doch auch auf dem System gespeichert und meine SQL Server DB´s kann ich auch sehen. Bloß die Postgre Dateien finde ich nicht.

Oder werden die anders gespeichert?

Danke und Gruß

Stephan

  • starte psql
  • tippe ein: ‘show data_directory;’
  • lese die Antwort, sie sagt Dir den Ordner, wo Deine Daten gespeichert sind.

Oder werden die anders gespeichert?

Nein. Du hast unterhalb des oben angezeigten Verzeichnisses weitere wie z.B. base, global, pg_xlog.

Die Zuordnung der Objekte zu den Dateinamen kannst Du abfragen:

test=*# select relname, relfilenode from pg_class where relname = 'test';
 relname | relfilenode
---------+-------------
 test    |    13741655
(1 row)

Du kannst u.U. mehr als eine Zeile bei obiger Abfrage haben, dann z.B., wenn in unterschiedlichen Schemas gleichbenannte Objekte liegen und/oder wenn es TOAST-Tables gibt und so weiter. Ich hab mich bisher um dieses Kram eher wenig interessiert, einen Link zum nachlesen nenne ich Dir weiter unten noch.
Und die zugehörige Datei dann finden:

pegasus:/var/lib/postgresql/8.1/main# find . -name 13741655
./base/16453/13741655

Auf die Gefahr hin, daß ich mich widerhole: ich bezweifle, das Du wissen willst/mußt, wo was gespeichert ist. Vielleicht ist nur der Datenbank-Name gefragt. Eine Software, die ganz regulär eine Verbindung zu einer laufenden DB aufbauen und Daten austauschen will, hat sich, sorry, einen Dreck um die physische Speicherung der Daten zu kümmern.

Ansonsten: im Detail findest Du die physische Speicherung der Daten hier erklärt:
http://www.postgresql.org/docs/8.1/interactive/storage.html



Andreas