PostgreSQL - XML

Inhaltsverzeichnis

PostgreSQL hat Unterstützung für einen Datentyp XMLObwohl dies für uns sehr nützlich sein kann, gibt es oft Kritik, da dies dazu führen kann, dass viele Regeln relationaler Datenbanken wie die Normalisierung gebrochen werden, obwohl dies nicht verhindert hat, dass alle Treiber und Engines von High-End-Datenbanken diesen Typ unterstützen von Dateien.

Laden von Daten in XML

Bevor wir sehen, wie es aus theoretischer Sicht funktioniert, sehen wir uns ein Beispiel an, wie wir ein Feld mit dieser Art von Daten laden können.

 INSERT INTO web_sessions (session_id, session_state) VALUES ('robe', 'colorredbackgroundsnoopy' :: xml); 
Wie wir sehen, ist das zweite Feld, in das wir einfügen, das Feld XML was wir durch Platzieren kennzeichnen :: xml am Ende der Informationen, die wir einfügen möchten.

Abfragen der XML

Um Anfragen zu stellen XML Wir können die Funktion verwenden xpath () Da es für diesen Zweck sehr nützlich ist, ist das erste Argument, das es empfängt, eine Abfrage vom Typ XPath und das zweite ein String, der das XML enthält, die Antwort ist ein Array von XML-Objekten, die die Bedingungen der XPath-Abfrage erfüllen. Sehen wir uns ein Beispiel an, wie dies durch Kombination mit der Funktion funktioniert entnisten () um die Ergebnisse wie Zeilen einer Tabelle anzuzeigen.

VERGRÖSSERN

Lassen Sie uns die aufgeführten Punkte aufschlüsseln:

1. Wir abonnieren das Array, da XPath es gibt immer ein Array zurück, auch wenn es sich um ein einzelnes Element handelt, das in der Antwort auf die Abfrage ankommt.

2. Wir erhalten das Element Text sowohl im Namen als auch im Wert jedes Prop-Elements.

3. Wir gehen die Tags ,,,, des XML durch.

Wie wir sehen, ist es recht einfach, die Abfragen durchzuführen, um die Werte der Felder mit dem XML-Datentyp zu erhalten.

Zusammengesetzte und benutzerdefinierte Datentypen

Der Typ des zusammengesetzten Objekts zusammengesetzt ist ein besonderer Typ in PostgreSQL da es oft zum Erstellen eines Objekts verwendet wird und dann einem benutzerdefinierten Typ zugeordnet wird oder als Rückgabe einer Funktion, die mehrere Spalten zurückgeben muss.

PostgreSQL erstellt automatisch einen benutzerdefinierten Typ für alle Tabellen. Für jeden Zweck können wir benutzerdefinierte Typen verwenden, wie sie standardmäßig in PostgreSQL definiert sind, wir können sogar ein Array dieser Typen erstellen.

Sehen wir uns einen kleinen Code dazu an:

 CREATE TABLE user_facts (user_id varchar (30) PRIMARY KEY, facts census.facts []);
Dann erstellen wir einen Datensatz:

 ZEILE (86, '25001010206', 2012, 123, NULL) :: census.facts
Und schließlich fügen wir es in unsere benutzerdefinierte Tabelle ein:

 INSERT INTO user_facts (user_id, facts) VALUES ('robe', ARRAY [ROW (86, '25001010206', 2012, 123, NULL) :: census.facts]); 
Wir können auf folgende Weise durch Verkettung sogar mehr Daten in unseren Typ einbinden:

 UPDATE user_facts SET Fakten = Fakten || Array (SELECT FROM census.facts AS F WHERE fact_type_id = 86) WHERE user_id = 'robe'; 
Dann sehen wir bei der Abfrage, wie alles Sinn macht, wie in der folgenden Abbildung:

VERGRÖSSERN

Damit beenden wir dieses Tutorial zu XML-Datentypen und benutzerdefinierten Datentypen, es lohnt sich wie immer, die hier gezeigten Themen auf diese Weise zu üben, um dieses Wissen für Ihre Anwendung so frisch wie möglich zu halten.

wave wave wave wave wave