JSON et fichier IFS
JSON et fichier IFS
Bonjour
nous venons de passer notre Ibm i en V7R2
est-il possible de lire avec un JSON_TABLE, un fichier de l'ifs contenant un flux JSON comme on peut le faire avec XMLTABLE?
Cdlt.
V7R2 TR9 et C9123720
nous venons de passer notre Ibm i en V7R2
est-il possible de lire avec un JSON_TABLE, un fichier de l'ifs contenant un flux JSON comme on peut le faire avec XMLTABLE?
Cdlt.
V7R2 TR9 et C9123720
-
- Site Admin
- Messages : 813
- Enregistré le : mer. 14 févr. 2007, 18:00:03
- Localisation : Nantes
- Contact :
JSON_TABLE
bien sur,
le premier paramètre de la fonction est "un flux JSON", soit :
- une variable
- une colonne d'une table
- le résultat de HTTP_GET_CLOB
- le résultat de GET_CLOB_FROM_FILE
voir https://www.ibm.com/support/knowledgece ... obfile.htm
le premier paramètre de la fonction est "un flux JSON", soit :
- une variable
- une colonne d'une table
- le résultat de HTTP_GET_CLOB
- le résultat de GET_CLOB_FROM_FILE
voir https://www.ibm.com/support/knowledgece ... obfile.htm
Christian Massé (Volubis.fr)
(sans sujet)
Bonjour
j'ai fichier dans l'ifs qui contient les info suivante
Je voudrais recupérer la valeur des zone z1, et z2.
j'ai fait la requête suivante :
select * from json_table(GET_CLOB_FROM_FILE('/ptmp/temp.json'), '$.data.L[*]'
columns( "Z1" char(10) path '$.Z1',
"Z2" cchar(4) path '$.z2'
)) as t
je n'ai pas d'erreur a l'éxecution mais aucune données s'affiche.
Cdlt
j'ai fichier dans l'ifs qui contient les info suivante
Code : Tout sélectionner
{"data":{"L":["-num= : "1","Z1" :"L367CF42","Z2:"4071","Z3:"30"},{"-num": "2","Z1":"O548CF42","Z2:"4071","Z3:"30"},{"-num": "3","Z1":"O548CF42","Z2:"6086","Z3:"30"},{"-num": "4","Z1":"Z768CF42","Z2:"4071","Z3:"30"},{"-num": "4","Z1":"Z768CF42","Z2:"4071","Z3:"30"}]}
j'ai fait la requête suivante :
select * from json_table(GET_CLOB_FROM_FILE('/ptmp/temp.json'), '$.data.L[*]'
columns( "Z1" char(10) path '$.Z1',
"Z2" cchar(4) path '$.z2'
)) as t
je n'ai pas d'erreur a l'éxecution mais aucune données s'affiche.
Cdlt
Modifié en dernier par monthi le lun. 16 sept. 2019, 15:25:32, modifié 1 fois.
(sans sujet)
il y a une erreur dans le copier coller du json il manque une { et }
cdlt[/quote]
Code : Tout sélectionner
{"data":{"L":[{"-num" : "1","Z1" :"L367CF42","Z2:"4071","Z3:"30"},{"-num": "2","Z1":"O548CF42","Z2:"4071","Z3:"30"},{"-num": "3","Z1":"O548CF42","Z2:"6086","Z3:"30"},{"-num": "4","Z1":"Z768CF42","Z2:"4071","Z3:"30"},{"-num": "4","Z1":"Z768CF42","Z2:"4071","Z3:"30"}]}}
-
- Site Admin
- Messages : 813
- Enregistré le : mer. 14 févr. 2007, 18:00:03
- Localisation : Nantes
- Contact :
ERROR ON ERROR
le JSON est peut-être invalide (je vois "-num= ...)
essaie avec
select * from json_table(GET_CLOB_FROM_FILE('/ptmp/temp.json'), '$.data.L[*]'
columns( "Z1" char(10) path 'Z1',
"Z2" cchar(4) path 'z2'
) ERROR ON ERROR ) as t
essaie avec
select * from json_table(GET_CLOB_FROM_FILE('/ptmp/temp.json'), '$.data.L[*]'
columns( "Z1" char(10) path 'Z1',
"Z2" cchar(4) path 'z2'
) ERROR ON ERROR ) as t
Christian Massé (Volubis.fr)
(sans sujet)
J'ai modifier le JSON et cela fonctionne
Merci
Code : Tout sélectionner
{"L":[{"Z1":"16","Z2":"1170518","Z3":"1","Z4":"1","Z5":"1","Z6":"V","Z7":"A","Z9":"3","Z10":"Enfant","Z11":"4","Z12":" 0786TN45","Z13":"6060","Z14":"4","Z15":"20","Z16":"1","Z18":"0","Z19":"0","Z21":"20","Z22":"1","Z24":"0","Z25":"14,91","Z26":"BR"},{"Z1":"16","Z2":"1170518","Z3":"1","Z4":"1","Z5":"3","Z6":"V","Z7":"A","Z8":"","Z9":"3","Z10":"Enfant ","Z11":"8","Z12":" EI24J155","Z13":"371","Z14":"5","Z15":"15","Z16":"1","Z17":"","Z18":"0","Z19":"0","Z20":"","Z21":"20","Z22":"1","Z23":"","Z24":"0","Z25":"28,6","Z26":"BR"}]}
Re: JSON et fichier IFS
Bonjour,
je poste ce message dans ce sujet car il y est tout à fait à sa place et peut l'enrichir.
Je suis en train de développé un programme RPG permmettant de traiter des données issues d'un tiers fournies sous forme de fichier .json assez volumineux (80Mo).
J'ai réalisé avec succès un premier POC permettant de lire un extrati du flux JSON que j'ai inséréré dans un champ de type CLOB d'un seul enregistrement d'une table DB2.
Mais lorsque je tente (en ayant lu ce sujet) de lire le flux directemnet depuis le fichier .json déposé sur l'IFS (par json_table et GET_CLOB_FROM_FILE), je ne parviens pas à récupérer les données (manifestement j'ai le bon nombre d'enregistrements attendus mais les données sont vides).
Voici le flux JSON :
Voici en PJ les requêtes (avec résultats).
Je pense qu'il ne manque pas grand chose mais je sèche...
je poste ce message dans ce sujet car il y est tout à fait à sa place et peut l'enrichir.
Je suis en train de développé un programme RPG permmettant de traiter des données issues d'un tiers fournies sous forme de fichier .json assez volumineux (80Mo).
J'ai réalisé avec succès un premier POC permettant de lire un extrati du flux JSON que j'ai inséréré dans un champ de type CLOB d'un seul enregistrement d'une table DB2.
Mais lorsque je tente (en ayant lu ce sujet) de lire le flux directemnet depuis le fichier .json déposé sur l'IFS (par json_table et GET_CLOB_FROM_FILE), je ne parviens pas à récupérer les données (manifestement j'ai le bon nombre d'enregistrements attendus mais les données sont vides).
Voici le flux JSON :
Code : Tout sélectionner
{
"Articles": [
{
"Article": "509179",
"Recommandations": [
{
"product": "352999",
"product_group": "M02030101",
"score_product_group": 9.767947861549283
},
{
"product": "509083",
"product_group": "M02050101",
"score_product_group": 7.475217627902435
},
{
"product": "477504",
"product_group": "M02050111",
"score_product_group": 6.330222823770727
},
{
"product": "7A7509",
"product_group": "M08100108",
"score_product_group": 5.2128502473290315
},
{
"product": "421728",
"product_group": "M02020105",
"score_product_group": 3.90768190669791
},
{
"product": "270388",
"product_group": "M02050109",
"score_product_group": 3.845726630966735
},
{
"product": "7H6222",
"product_group": "M08090501",
"score_product_group": 2.897045174433684
},
{
"product": "499062",
"product_group": "M02050112",
"score_product_group": 2.2172711716358147
},
{
"product": "449090",
"product_group": "M02020115",
"score_product_group": 2.1238021407815446
},
{
"product": "472636",
"product_group": "M02030203",
"score_product_group": 0.3035226975855595
}
]
},
{
"Article": "509180",
"Recommandations": [
{
"product": "509075",
"product_group": "M02050101",
"score_product_group": 8.262788211000139
},
{
"product": "485399",
"product_group": "M02030101",
"score_product_group": 7.440151219227198
},
{
"product": "477504",
"product_group": "M02050111",
"score_product_group": 6.330222823770727
},
{
"product": "7A7509",
"product_group": "M08100108",
"score_product_group": 5.2128502473290315
},
{
"product": "275692",
"product_group": "M02050109",
"score_product_group": 5.0661678055223875
},
{
"product": "421728",
"product_group": "M02020105",
"score_product_group": 3.90768190669791
},
{
"product": "7H6222",
"product_group": "M08090501",
"score_product_group": 2.897045174433684
},
{
"product": "499061",
"product_group": "M02050112",
"score_product_group": 2.4235820734319486
},
{
"product": "449076",
"product_group": "M02020115",
"score_product_group": 1.6490608615033409
},
{
"product": "523231",
"product_group": "M02080207",
"score_product_group": 0.2599497975866204
}
]
}
,
{
"Article": "ToTO",
"Recommandations": [
{
"product": "ToTO_1",
"product_group": "M02050101",
"score_product_group": 8.262788211000139
},
{
"product": "ToTO_2",
"product_group": "M02030101",
"score_product_group": 7.440151219227198
}
]
}
]
}
Je pense qu'il ne manque pas grand chose mais je sèche...
- Fichiers joints
-
- Et celle basée sur le fichier de l'IFS ne ramenant pas les données
- Capture2.JPG (35.14 Kio) Vu 29593 fois
-
- Voici la requête (avec son résultat) basée sur le flux dans un table
- Capture1.JPG (46 Kio) Vu 29593 fois
Erwan
-
- Site Admin
- Messages : 813
- Enregistré le : mer. 14 févr. 2007, 18:00:03
- Localisation : Nantes
- Contact :
Re: JSON et fichier IFS
Dans l'IFS quel est le CSSID du fichier ?
les droits sont-ile suffisants ?
les droits sont-ile suffisants ?
Christian Massé (Volubis.fr)
Re: JSON et fichier IFS
Le CCSID est 850 et les droits sont complets.
Je suspecte que le problème provienne du CCSID...
Je suspecte que le problème provienne du CCSID...
Erwan
-
- Site Admin
- Messages : 813
- Enregistré le : mer. 14 févr. 2007, 18:00:03
- Localisation : Nantes
- Contact :
Re: JSON et fichier IFS
850 c'est l'ASCII de DOS.
819 (ASCII international) me semble plus approprié.
819 (ASCII international) me semble plus approprié.
Christian Massé (Volubis.fr)
Re: JSON et fichier IFS
J'ai modifié le CCSID du fichier .json (CHGATR OBJ('/IWS_MVX/Recommender_TEST.json') ATR(*CCSID) VALUE(819)) mais ce n'est pas mieux...
Erwan
-
- Site Admin
- Messages : 813
- Enregistré le : mer. 14 févr. 2007, 18:00:03
- Localisation : Nantes
- Contact :
Re: JSON et fichier IFS
envoyez moi le fichier que je vérifie si le contenu correspond au CCSID déclaré. si par exemple vous regardez avec WRKLNK/option 5 (DSPF) que voyez vous ?
Christian Massé (Volubis.fr)
-
- Site Admin
- Messages : 813
- Enregistré le : mer. 14 févr. 2007, 18:00:03
- Localisation : Nantes
- Contact :
Re: JSON et fichier IFS
il est écrit
select * from json_table(GET_CLOB_FROM_FILE('/IWS_MVX/Recommender_TEST.json'), '$.Articles.[*]'
columns( code_article char(6) path 'Article',
NESTED '$.Recommandations[*]'columns (
rang for ORDINALITY,
code_associe char(15) path '$.product'
)
) ERROR ON ERROR ) as t ;
OR il faut écrire
select * from json_table(GET_CLOB_FROM_FILE('/IWS_MVX/Recommender_TEST.json'), '$.Articles[*]' <- sans le point
columns( code_article char(6) path '$.Article', <- avec $.
NESTED '$.Recommandations[*]'columns (
rang for ORDINALITY,
code_associe char(15) path '$.product'
)
) ERROR ON ERROR ) as t ;
select * from json_table(GET_CLOB_FROM_FILE('/IWS_MVX/Recommender_TEST.json'), '$.Articles.[*]'
columns( code_article char(6) path 'Article',
NESTED '$.Recommandations[*]'columns (
rang for ORDINALITY,
code_associe char(15) path '$.product'
)
) ERROR ON ERROR ) as t ;
OR il faut écrire
select * from json_table(GET_CLOB_FROM_FILE('/IWS_MVX/Recommender_TEST.json'), '$.Articles[*]' <- sans le point
columns( code_article char(6) path '$.Article', <- avec $.
NESTED '$.Recommandations[*]'columns (
rang for ORDINALITY,
code_associe char(15) path '$.product'
)
) ERROR ON ERROR ) as t ;
Christian Massé (Volubis.fr)
Re: JSON et fichier IFS
C'est évident quand on a la solution sous les yeux
Je récupère bien mes données. C'est parfait
Merci encore.
Je récupère bien mes données. C'est parfait
Merci encore.
Erwan