Est-il possible d'analyser JSON
sur TSQL
?
Je ne veux pas créer un JSON
plutôt qu'une chaîne de caractères. JSON
passée en tant que parameter
.
Est-il possible d'analyser JSON
sur TSQL
?
Je ne veux pas créer un JSON
plutôt qu'une chaîne de caractères. JSON
passée en tant que parameter
.
Il semble que j'aie un énorme penchant masochiste en ce sens que j'ai écrit un analyseur JSON. Il convertit un document JSON en une table de liste d'adjacence SQL, qui est facile à utiliser pour mettre à jour vos tables de données. En fait, j'ai fait pire, car j'ai écrit du code pour faire le processus inverse, c'est-à-dire passer d'une table hiérarchique à une chaîne JSON.
L'article et le code sont ici : Consommation de chaînes Json dans le serveur SQL .
Select * from parseJSON('{ "Person": { "firstName": "John", "lastName": "Smith", "age": 25, "Address": { "streetAddress":"21 2nd Street", "city":"New York", "state":"NY", "postalCode":"10021" }, "PhoneNumbers": { "home":"212 555-1234", "fax":"646 555-4567" } } } ')
Pour obtenir :
Il s'agit d'une fonctionnalité intéressante, mais qui présente certaines limites, par exemple la suppression du "-" des nombres négatifs.
Très cool ! vous avez une coquille dans le script : IF OBJECT_ID (N'dbo.parseJSON') IS NOT NULL DROP FUNCTION dbo.JSONEscaped GO -- devrait tester pour dbo.JSONEscaped dans le test IF.
@phil dbo.parseJSON fonctionne très lentement en cas de données volumineuses. Pouvons-nous réduire le temps d'exécution en utilisant d'autres méthodes ?
Mise à jour : à partir de SQL Server 2016 l'analyse syntaxique de JSON dans TSQL est désormais possible .
En natif, il n'y a pas de support. Vous devrez utiliser le CLR. C'est aussi simple que cela, sauf si vous êtes masochiste et que vous voulez écrire un analyseur JSON en SQL.
Normalement, les gens demandent une sortie JSON de la base de données et il existe des exemples sur Internet. Mais dans une base de données ?
JSON est un protocole assez simple, qui ne nécessite pas une grande dose de masochisme. Une fois que vous l'avez, vous pouvez utiliser la même routine pour tout votre JSON. Quoi qu'il en soit, je l'ai fait pour vous ici. simple-talk.com/sql/t-sql-programming/
Phil Factor : Je lis vos articles depuis de nombreuses années. Si vous n'aviez pas écrit cet article aujourd'hui Je l'aurais probablement cité il y a 6 mois quand j'ai répondu...
Enfin, SQL Server 2016 ajoutera le support natif de JSON !
Réf :
Parmi les fonctionnalités supplémentaires de SQL Server 2016, citons :
- Améliorations supplémentaires de la sécurité au niveau des rangées et du masquage dynamique des données pour compléter nos investissements en matière de sécurité avec Always.
Cryptée.- Améliorations apportées à AlwaysOn pour une disponibilité et une reprise après sinistre plus robustes avec plusieurs répliques synchrones et une charge secondaire.
équilibrage.- Prise en charge native de JSON pour offrir de meilleures performances et une prise en charge de vos nombreux types de données.
- Les outils SQL Server Enterprise Information Management (EIM) et Analysis Services bénéficient d'une mise à niveau en termes de performances, de convivialité et d'évolutivité. l'évolutivité.
- Sauvegardes hybrides plus rapides, scénarios de haute disponibilité et de reprise après sinistre pour sauvegarder et restaurer vos bases de données sur site vers Azure.
et placez vos serveurs SQL AlwaysOn secondaires dans Azure.
Article de blog sur les caractéristiques : http://blogs.msdn.com/b/jocapc/archive/2015/05/16/json-support-in-sql-server-2016.aspx
Le serveur SQL 2016 prend en charge json data
l'analyse syntaxique en utilisant OPENJSON
. Vous pouvez utiliser OPENJSON
à la carte json data
aux lignes et aux colonnes.
Votre json Data
[
{ "id" : 2,"name": "John"},
{ "id" : 5,"name": "John"}
]
Voici comment vous pouvez gérer le json dans sql
//@pJson is json data passed from code.
INSERT INTO YourTable (id, Name)
SELECT id, name
FROM OPENJSON(@pJson)
WITH (id int,
name nvarchar(max))
Ici est un article détaillé qui couvre ce sujet.
J'ai aussi un énorme penchant masochiste qui m'a poussé à écrire un autre analyseur JSON. Celui-ci utilise une approche procédurale. Il utilise une table de liste hiérarchique SQL similaire pour stocker les données analysées. Aussi dans le paquet sont :
N'hésitez pas à l'utiliser et à vous amuser avec elle.
http://www.codeproject.com/Articles/1000953/JSON-for-Sql-Server-Part
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.