2017-12-11 7 views
0

Wie kann ich Dateien im PostgreSQL-Verzeichnis "data \ base" anzeigen und lesen? Ich versuche "pg_ctl" zu verwenden, um dieses Verzeichnis als Datenbank auf meinen Server zu importieren, aber es ist fehlgeschlagen. Ich versuche, ein TAR-Archiv zu machen und es mit pgadmin wiederherzustellen, aber es gibt einen TOC-Fehler zurück. Ich weiß, dass jeder Ordner in "Daten/Base" eine Datenbank-OID ist und jede Datei eine Tabelle und relative Daten ist. diese Dateien wie eine binäre oder Datendatei wie folgt: (16384/1174)PostgreSQL-Datenverzeichnisdateien lesen

€ ÌÌ 0 ðð b1 In der Tat 0ëÌ Od AY dy AY ° Ÿ Ÿ Ÿ € YPY Ÿ PŸ @Ÿ 0Ÿ Ÿ Ÿ Ÿ ðž àž Ðž Àž °ž  ž ž €ž pž ¼ pz @ § 0z Zz ZD V e À ° € p P @ 0 ðœ àœ Ðœ Àœ °œ  œ œ €œ pœ œ POE @ œ 0œ œ œ œ D> A> D> A> °>>> €> p> '> P> @> 0>>>> Ds Ds ° š š

gibt es eine Möglichkeit zu lesen und sehen ?? Ich möchte Tabellen und Daten in ihm abrufen. Ich habe viel gesucht und keine echte Lösung gefunden. bitte helfen. Danke vielmals.

+1

Sie lesen Daten aus diesen Verzeichnissen, indem Sie SQL-Abfragen mit einem SQL-Client ausführen –

+0

Wie kann ich diese Abfrage durchführen? Beachten Sie, dass dieses Verzeichnis nicht in meinem Server als Datenbank ist und ich es getrennt in "data \ base" –

+0

Wenn das nicht Teil des Datenverzeichnisses Ihres Servers ist, gibt es keine Möglichkeit, es zu lesen. –

Antwort

0

weder pg_ctl. noch pgAdmin, noch kann jeder SQL-Client selbst mit Datenbankdateien arbeiten. Wenn Sie die Datei lesen möchten, sollten Sie die Seitenstruktur (Link unten) und die Verwendung dieses Wissens studieren. Also antworten Gibt es eine Möglichkeit zu sehen und zu lesen? ja, im Grunde zitieren Sie Inhalte in Ihrer Frage. Sie können sie jedoch nicht zum Berechnen von Tabellen- oder Indexdaten verwenden. Es sei denn, Sie rücken die Postgres zurück. Oder versuchen Sie es zu hacken, damit es denkt, dass Ihre 16384/1174 Datei eine bestehende Beziehung ist - beide sind außerhalb des SO-Bereichs, glaube ich.

unter einen Verweis auf die Struktur, dass Sie

https://www.postgresql.org/docs/current/static/storage-page-layout.html

Jede Tabelle und Index wird als ein Array von Seiten einer festen Größe gespeichert

und weiter zu lesen versuchen :

Die ersten 24 Bytes jeder Seite bestehen aus a Seitenkopf (PageHeaderData). Das Format ist in Tabelle 66.3 aufgeführt. Das erste Feld verfolgt den letzten WAL-Eintrag, der sich auf diese Seite bezieht. Das zweite Feld enthält die Seitenprüfsumme, wenn Datenprüfsummen aktiviert sind. Das nächste ist ein 2-Byte-Feld, das Flag-Bits enthält. Diesem folgen drei 2-Byte-Integer-Felder (pd_lower, pd_upper und pd_special). Diese enthalten Byte-Offsets vom Anfang der Seite bis zum Anfang des nicht zugeordneten -Speicherplatzes, bis zum Ende des nicht zugeordneten Speicherplatzes und bis zum Anfang des Sonderbereichs . Die nächsten 2 Bytes des Seitenkopfs, pd_pagesize_version, speichern sowohl die Seitengröße als auch einen Versionsindikator. Beginnend mit PostgreSQL 8.3 ist die Versionsnummer 4; PostgreSQL 8.1 und 8.2 verwendeten Versionsnummer 3; PostgreSQL 8.0 verwendete Versionsnummer 2; PostgreSQL 7.3 und 7.4 verwendeten Versionsnummer 1; frühere Versionen verwendet Versionsnummer 0. (Das grundlegende Seitenlayout und Header-Format hat nicht in den meisten dieser Versionen geändert, aber das Layout der Heap-Zeile Header hat.) Die Seitengröße ist im Grunde nur als Gegenprobe vorhanden; dort ist keine Unterstützung für mehr als eine Seitengröße in einer Installation. Das letzte Feld ist ein Hinweis, der anzeigt, ob es wahrscheinlich profitabel ist, die Seite zu beschneiden : Es verfolgt das älteste ungeschnittene XMAX auf der Seite.