12c / 18c / 19c
Neben der Eigenschaft als Beschreibungssprache für Datenstrukturen zu dienen, setzt sich json auch immer mehr bei der Datenspeicherung und -übertragung durch.
Mit der Oracle Datenbank 12c hat auch Oracle einen json Parser in SQL integriert.
Ein eigener Datentyp existiert dazu nicht, die Daten werden in VARCHAR2,CLOB oder BLOB gespeichert.
Es kann ein Constraint auf die Spalte in der Tabelle mit den Json Daten gelegt werden der üerprüft ob das Dokument auch wirklich wohl geformt ist.
Um den Unterschied zwischen traditionellen Datenhandling mit SQL und dem mit JSON aufzuzeigen, legen wir uns zuvor die Inhalte der EMP Tabelle als JSON Strukturen ab.
Eine Tabelle mit einem CLOB Feld für die JSON Daten, diese werden beim Einfügen über eine Constraint auf Gültigkeit geprüft:
CREATE TABLE JSON_EMP ( empno NUMBER(11) , emp_value CLOB CONSTRAINT emp_valid_json CHECK (emp_value IS JSON));
Soll ein BLOB Feld zur Datenspeicherung verwendet werden muss bei den Abfragen mit SQL ein Cast auf Json mit „FORMAT JSON“ erfolgen!
Aus dem Emp Daten das Json Dokument pro Eintrag in der Tabelle erzeugen und dann einfügen:
INSERT INTO JSON_EMP (empno,emp_value) SELECT empno ,'{' ||' "EMPNO":"'||EMPNO||'"' ||' ,"ENAME":"'||ENAME||'"' ||' ,"JOB":"'||JOB||'"' ||' ,"MGR":"'||MGR||'"' ||' ,"SAL":"'||SAL||'"' ||' ,"COMM":"'||COMM||'"' ||' ,"DEPTNO":"'||DEPTNO||'"' ||'}' FROM emp / commit;
Im einfachsten Fall können die Json Elemente direkt in SQL referenziert werden:
SELECT j.emp_value.ENAME, j.emp_value.DEPTNO FROM JSON_EMP j;
Auf die GROSS/klein Schreibung achten! Muss genau zu dem JSON Dokument passen!
ab 12c Release 1 (12.1.0.2)
Abfragen:
Allgemein
Oracle:
Veranstaltungen:
Demo: