|
|
|
Как делать UPDATE для типа данных json в PosrgeSQL
|
|||
|---|---|---|---|
|
#18+
Здравствуйте есть json массив param: ["123",[23,0,"12:02"]] Требуется обновить param->1->0 UPDATE ah_library SET param->1->0 = 1; [Err] ОШИБКА: ошибка синтаксиса (примерное положение: "->") Как это сделать? Неужели способа кроме как вытащить весь массив param в Java и там ему заменить значение нету? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2015, 14:13 |
|
||
|
Как делать UPDATE для типа данных json в PosrgeSQL
|
|||
|---|---|---|---|
|
#18+
GeneralprogerЗдравствуйте есть json массив param: ["123",[23,0,"12:02"]] Требуется обновить param->1->0 UPDATE ah_library SET param->1->0 = 1; [Err] ОШИБКА: ошибка синтаксиса (примерное положение: "->") Как это сделать? Неужели способа кроме как вытащить весь массив param в Java и там ему заменить значение нету? С т.з. базы json по большому счету просто простыня текста... так что в общем случае да - вытаскивать на приложение и там менять. Если вам такое понадобилось делать часто - у вас неправильный дизайн базы и это поле (поля) должны быть не в json а в основной таблице. Если сильно постараться можно попробовать Json разобрать запросом и собрать назад. Но это неудобно в общем случае. См: тут например. --Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2015, 15:33 |
|
||
|
Как делать UPDATE для типа данных json в PosrgeSQL
|
|||
|---|---|---|---|
|
#18+
Generalproger, update в базе -- это дублирование всей записи (а если джейсон килобайтный, а то и более -- то представьте себе цену) да и редактирование json-а, как переменной, -- это ещё и разборка сборка его через присвоение его всего каким-то переменным, один -- исходной, второй -- выходной, ну и в промежутках преобразования, а не как бы хотелось -- поменять сво-во объекта по указателю, ничего не разбирая руками и т.п.. (может быть в перл его кстати дешевле будет запихать, и там надругаться -- там похожие объекты есть, надо покумекать). т.ч. если вы используете json -- вы либо идиот, либо очень хорошо представляете себе цену этого шага. второе, очевидно, к вам пока не относится. такие дела ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2015, 19:42 |
|
||
|
Как делать UPDATE для типа данных json в PosrgeSQL
|
|||
|---|---|---|---|
|
#18+
лопата, Почитал по этой теме, пожалуй вы правы, в данном случае он не настолько нужен. А в целом JSON мне кажется использовать очень удобно если редко обновлять, или выборка элемента это тоже высокая нагрузка на БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2015, 22:50 |
|
||
|
Как делать UPDATE для типа данных json в PosrgeSQL
|
|||
|---|---|---|---|
|
#18+
Generalproger, есть многие штуки, которые иногда сильно ускоряют некоторые вещи, в т.ч. массивы. кое-что можно упростить через hstore, который якобы слабее джейсона, но в плоском случае удобнее -- у него конкатенация есть. а именно -- хранение переменного число атрибутов, тем не менее индексируемого , в отличие от EAV. для json скорее всего тоже есть ниша -- когда апдейты редки, или можно с ними смириться, в том случае, когда по json возможен какой-нито полезный функциональный индекс, частый в пользовании. (всё от того, что доступные всяким негодяям в М-системах самопальные индексы по чему угодно нам не доступны -- нельзя повесить смешенный индекс на комбинации полей и выражений из 2-х таблиц, да и по комбинации строк одной (типа gist на ARRAY (SELECT fld FROM tbl WHERE main_id .... ) ) -- не вешается. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2015, 01:30 |
|
||
|
Как делать UPDATE для типа данных json в PosrgeSQL
|
|||
|---|---|---|---|
|
#18+
Если нужно много работать с JSON, рекомендую установить plv8. Для javascript / coffeescript JSON - родной тип данных, и работать с ним легко и приятно. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2015, 11:37 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=113&tid=1998106]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 375ms |

| 0 / 0 |
