Renvoie les résultats d'une requête SQL en tant que JSON dans Oracle 12c
Fond
J'ai besoin de récupérer quelques milliers de lignes à partir d'Oracle et de les convertir en JSON pour une utilisation dans SlickGrid.
Actuellement, je suis aller chercher les lignes de PHP, la conversion de ISO vers UTF-8 avec iconv et de l'exportation vers json avec json_encode. Toute l'opération prend environ 1 seconde sur la DB côté et 5 secondes pour générer du JSON. C'est la façon de le long.
La question
J'ai lu que l'Oracle 12c prend en charge JSON, mais je ne trouve pas exactement ce dont j'ai besoin.
Est-il un moyen de retourner le résultat d'une requête sql standard dans un format json?
soi-disant je voudrais émettre une requête de ce type:
SELECT * from table AS JSON
et recevez un json valide similaire à ceci:
[{"col1": "value1", "col2": 2}, {"col1": "valueOfRow2", "col2": 3}]
Une chose importante, c'est que j'ai besoin d'avoir l'unicode des séquences échappé pour moi, comme je l'ai utiliser ISO-8859-2 jeu de caractères sur le côté client, et JSON doivent être en UTF-8 ou ont les séquences d'échappement.
source d'informationauteur SWilk
Vous devez vous connecter pour publier un commentaire.
Oracle 12c version et 12.1.0.2; (la dernière version de 11.11.2014) ajoute la prise en charge de JSON:
https://docs.oracle.com/database/121/NEWFT/chapter12102.htm#BGBGADCC
Il est disponible depuis le 17 octobre. https://blogs.oracle.com/db/entry/oracle_database_12c_release_1
Si vous êtes incapable de patch ou de travailler avec cette version il y a un super package écrit par Lewis Cunningham et Jonas Krogsboell: PL/JSON
* http://pljson.sourceforge.net/
C'est un excellent package (je l'ai utilisé dans de nombreuses installations de bases de données).
Les exemples inclus sont bonnes et couvrir la plupart des scénarios.
Vous pouvez utiliser le xmltype pour convertir le résultat d'une SQL en XML et JSON. Voir l'article suivant pour la solution qui va travailler pour Oracle depuis la version 9. Vous pouvez également télécharger le package itstar_xml_util:
http://stefan-armbruster.com/index.php/12-it/pl-sql/12-oracle-xml-and-json-goodies
Un exemple simple avec la table emp:
Le résultat ressemble à ceci:
12cR2 (disponible dans l'Oracle Cloud) prend en charge nativement.
ou
Oracle 12c support de JSON est une capacité de stocker des objets JSON, de les interroger et de les sélectionner à partir d'eux.
Vous avez la forme d'un tableau et seulement besoin d'afficher vos données en JSON. Ainsi, vous pouvez simplement concaténer des lignes dans {'col1': 'rowN1', 'col2': 'rowN2'} et faire le reste sur un côté client.
Ou vous pouvez utiliser LISTAGG pour obtenir le document en entier. Exemple:
http://technology.amis.nl/2011/06/14/creating-json-document-straight-from-sql-query-using-listagg-and-with-clause/
Que l'esprit, le SQL VARCHAR2 limite de 4000 caractères.
Vous pouvez également regarder dans http://database-geek.com/2009/03/25/json-in-and-out-of-oracle-json-data-type/ Mais je ne pense pas que l'oracle type d'objet vous permettra d'améliorer votre performance.
Une autre approche consiste à exporter XML à l'aide de XMLType. Puis convertir XML en JSON. XMLType prendra soin de caractères spéciaux, et de l'API est assez stable (vous n'aurez pas besoin de réécrire votre programme pour Oracle 14).
Je ne vois pas en Python solution (dans le cas où vous avez besoin de vider JSON).
J'ai écrit json-ora-extrait de taille moyenne extraits (parce que le jeu de données a pour s'adapter à la mémoire disponible).
Il utilise
wx_Oracle
etjson
modules Python pour lire des données à partir de la base de données Oracle (toute version) et la déverser dans*.json
fichier.Il ya aussi une option pour créer comprimé
*.gz
fichier.À ajouter à la réponse de l'oracle 12.2 , vous pouvez créer json que vous voulez comme ça .