|
|
|
Парсинг JSON средствами Oracle 12
|
|||
|---|---|---|---|
|
#18+
Доброго всем времени суток! Дело в том, что была поставлена задача парсить курсы валют по разным банкам. Имея API с JSON, на которой собраны уже все курсы решили нативными средствами 12-го Oracle парсить эти курсы в таблицу или представление. Подскажите пожалуйста, как лучше поступить в данной ситуации? С PL/JSON ознакомились, хотелось бы использовать нативные средства. Для начала был импортирован json в clob поле таблицы, назовём её тут RATES_JSON. Вот отрывок используемого json-а Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. Как парсить текст по значениям используя JSON_TABLE чтобы создавать поля по каждому банку - понятно, но хотелось бы разбить текст по полям "банки"-"валюта"-"покупка"-"продажа"? В общем, главный вопрос - как создать поле с содержимым только родительской категории без дочерних данных? Заранее благодарен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2016, 17:21 |
|
||
|
Парсинг JSON средствами Oracle 12
|
|||
|---|---|---|---|
|
#18+
alteksaКак парсить текст по значениям используя JSON_TABLE чтобы создавать поля по каждому банку - понятноСвою понятливость принято подтверждать кодом. alteksaкак создать поле с содержимым только родительской категории без дочерних данных??!! http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2016, 17:28 |
|
||
|
Парсинг JSON средствами Oracle 12
|
|||
|---|---|---|---|
|
#18+
alteksaхотелось бы использовать нативные средстваО каких именно нативных средствах речь? Код: plsql 1. 2. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. json_value позволяет получать значения без указания конкретного банка. Второй вариант преобразуется в json_query ( 18693271 ) и не дает такой возможности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2016, 18:20 |
|
||
|
Парсинг JSON средствами Oracle 12
|
|||
|---|---|---|---|
|
#18+
alteksa, Что-то это не выглядит как нормальный json. Теперь для того чтобы получить данные, нужно хардкодить PATHes. Для того чтобы преобразовать в реляционную модель нужен unpivot. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. А Теперь можно сравнить с json v2 : Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2016, 22:17 |
|
||
|
Парсинг JSON средствами Oracle 12
|
|||
|---|---|---|---|
|
#18+
а чем PL/JSON не устроил? просто любопытно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2016, 19:15 |
|
||
|
Парсинг JSON средствами Oracle 12
|
|||
|---|---|---|---|
|
#18+
Немного offtop, но только сегодня на тестовой базе (Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production, Solaris Operating System (x86-64)) пробовал и json_table и json_value. Оказалось, json_table нельзя использовать в двух параллельно работающих сессиях. Попробуйте в цикле запустить парсинг простейшего json через json_table и посмотрите, что получится. У меня результат был таким: https://gyazo.com/75b8a1285e8ba41d6c1a03e46e502e17 Кроме того, даже если несколько полей вытаскивать через json_value ( у меня в примере было 4 поля) - получается раза в полтора быстрее, чем через json_table. Наверное, будет зависеть от кол-ва полей. На SE2 вторая сессия просто отваливалась. Баги-патчи не успел еще посмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2016, 19:31 |
|
||
|
Парсинг JSON средствами Oracle 12
|
|||
|---|---|---|---|
|
#18+
ElicalteksaКак парсить текст по значениям используя JSON_TABLE чтобы создавать поля по каждому банку - понятноСвою понятливость принято подтверждать кодом. Спасибо Ora601! "Свою понятливость" впредь буду подтверждать кодом, сейчас не вижу смысла, так как Ora601 написал то, что я имел ввиду. Правильнее было бы написать хардкодить до цифровых значений банк.валюта.тип_операции по примеру: Код: javascript 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2016, 19:42 |
|
||
|
Парсинг JSON средствами Oracle 12
|
|||
|---|---|---|---|
|
#18+
Деев И.Попробуйте в цикле запустить парсинг простейшего json через json_table и посмотрите, что получится.Попробуй предъявить test-case и, может быть, посмотрим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2016, 19:46 |
|
||
|
Парсинг JSON средствами Oracle 12
|
|||
|---|---|---|---|
|
#18+
Деев И., на той же версии полет нормальный... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2016, 19:49 |
|
||
|
Парсинг JSON средствами Oracle 12
|
|||
|---|---|---|---|
|
#18+
Elicalteksaкак создать поле с содержимым только родительской категории без дочерних данных??!! http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM Используя FORMAT JSON PATH получаются отрывки JSON-а по банкам, к примеру банк MAIB: Код: javascript 1. А хотелось бы сразу получать в таблицу root-категории, по типу: bank_column---currency ... EXIM--------------MDL ... EXIM--------------USD ... EXIM--------------EUR ... EXIM--------------RUB ... MAIB .... ... ... Uchastnegа чем PL/JSON не устроил? просто любопытно. Не то, чтобы не устроил - не хотелось бы тащить несколько сторонних пакетов на схему - пока есть необходимость только парсить курсы по валютам. Наверное менталитет сказывается - когда нужен какой-то инструмент, то пробуем его найти у себя дома, если не находим ничего полезного дома, то идём к соседу. Также и тут, видимо придётся сделать на скорую руку свой инструмент, либо идти к соседу за pl/json или чем-то другим :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 11:49 |
|
||
|
Парсинг JSON средствами Oracle 12
|
|||
|---|---|---|---|
|
#18+
Хотел выразить благодарность всем откликнувшимся! Задача разрешилась следующим образом - экспериментируя с изначальным json-ом(представлен в первом посте), решили обратиться к ребятам которые делятся своей API и предоставляют JSON. Ответив для чего нам нужна их API, они предоставили URL с токеном на котором есть нормально структурированный JSON(подробности под катом). Кусок нового JSON-а Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. А с этим текстом уже взятки гладки: Получаем банки: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Потом курсы: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Всем спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 17:45 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39191730&tid=1887227]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
199ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 515ms |

| 0 / 0 |
