Type JSON sous PostgreSQL
PostgreSQL propose un nouveau type de données qui permet d'insérer du JSON dans une table.
Il s'agit d'une solution pour coupler de l'imbrication NF² avec une base relationnelle.
Rappel :
Syntaxe : Créer une table avec des attributs JSON
1
CREATE TABLE t (
2
...
3
jsonatt JSON,
4
...
5
);
6
Syntaxe : Insérer du JSON dans une table
1
INSERT INTO t
2
VALUES (
3
...
4
'{ "key1": "value1", "key2": "value2"}',
5
...
6
);
Exemple :
1
CREATE TABLE cours (
2
titre TEXT PRIMARY KEY,
3
auteur JSON NOT NULL,
4
chapitres JSON NOT NULL,
5
nbpages INTEGER
6
);
1
INSERT INTO cours (titre, auteur, chapitres, nbpages)
2
VALUES (
3
'Bases de données',
4
'{"nom":"Crozat","prenom":"Stéphane"}',
5
'["UML","R","SQL","Normalisation","RO"]',
6
98
7
);
8
INSERT INTO cours (titre, auteur, chapitres, nbpages)
9
VALUES (
10
'Ingénierie documentaire',
11
'{"nom":"Crozat","prenom":"Stéphane"}',
12
'["XML","JSON"]',
13
45
14
);
1
titre | auteur | chapitres | nbpages
2
-------------------------+--------------------------------------+----------------------------------------+---------
3
Bases de données | {"nom":"Crozat","prenom":"Stéphane"} | ["UML","R","SQL","Normalisation","RO"] | 98
4
Ingénierie documentaire | {"nom":"Crozat","prenom":"Stéphane"} | ["XML","JSON"] | 45
Fondamental :
Pour manipuler les données JSON intégrées dans une base PosgreSQL, on dispose d'opérateur complémentaires permettant de projeter les représentations JSON en relationnel.
Par exemple :
->>
permet de projeter une valeur JSON->
permet de parcourir un arbre JSONJSON_ARRAY_ELEMENTS
permet de convertir un tableau de valeurs JSON en relationnelJSON_TO_RECORDSET
permet de convertir un tableau d'objets JSON en relationnel