|
|
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
Имеем переменную типа JSON В ней находятся данные, которые необходимо вставить в таблицу. Можно, конечно вручную выбирать поля в определенном порядке и формировать строку для выполнения вставки данных, но надеюсь, что есть более простой способ. Помогите пожалуйста кто знает как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2013, 21:13:02 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
хотелось бы функцию типа json_to_row... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2013, 21:13:55 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
sp, http://www.postgresql.org/docs/9.2/static/functions-json.html - 92 но http://www.postgresql.org/docs/9.3/static/functions-json.html - 93 уже есть! щас будет скоро совсем json_populate_record json_populate_recordset ну и щас hstore http://www.postgresql.org/docs/9.2/static/hstore.html - 92 populate_record ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2013, 22:34:16 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
Misha Tyurin, спасибо за информацию, попробовал, но нифига не получается: json_populate_record для ключевого поля возвращает null (естественно когда вставляем новую запись) и при попытке вставить данные получаю ошибку Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Получаем ошибку при выполнении: Код: plaintext 1. id в данной таблице - serial; попытка перечислить поля таблицы в конструкции Insert into (c id и без него) приводит к ошибке "INSERT has more target columns than expressions" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2013, 23:16:23 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
Вот полный пример Код: 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. 34. 35. 36. 37. 38. 39. 40. 41. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2013, 23:36:47 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
разобрался - вставку нужно делать так Код: plsql 1. но перед вставкой необходимо id присвоить правильное значения ключа id и заполнить также все поля имеющие значения по-умолчанию!!! тут как-то не очень удобно! Получается много геммороя - надо выяснить какие поля ключевые и имеющие значения по-умолчанию и если они в переменной JSON раны null то их надо заполнить значениями, а для этого их надо узнать. В PG, к сожалению, не проходит даже такой оператор, который в других базах работает на ура Код: plsql 1. надо обязательно записать так Код: plsql 1. грустно.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 00:18:25 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
грустно и от того что в других БД если поле имеет значение по-умолчанию и при вставке оно равно null - БД его заполняет самостоятельно, а в PG надо либо узнать значения поля по-умолчанию, либо сформировать строку оператора insert into и вместо ключей и полей по-молчанию вставить константу DEFAULT - однако и то и другое - геморрой!(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 00:23:52 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
ну вы просто null не передавайте. как встретите в hstore null - так и выкалывайте - а то я за вас рад -как же null вставлять в поле, если там какая-то сволочь дефолт прописала, но поле всё ж таки нуллабл, и мы именно null и хотим вставить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 01:20:57 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
default but nullable, дык json_populate_record(null::core.test, opt) сам вставляет отсутствующие поля и заполняет их NULL! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 01:21:55 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
spdefault but nullable, дык json_populate_record(null::core.test, opt) сам вставляет отсутствующие поля и заполняет их NULL!ру какбе врать-врите, но не заговаривайтесь вот это вот Код: plsql 1. - пупкин написал ? рассказать вам, что вы делаете этим оператором ? или сами догадаетесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 08:20:44 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
пупкин написалрассказать вам, что вы делаете этим оператором ? или сами догадаетесь расскажите, будьте любезны - интересно узнать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 09:00:08 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
для информации Код: plsql 1. 2. 3. 4. 5. 6. выводит Код: javascript 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 09:01:49 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
для информации Код: plsql 1. 2. 3. 4. 5. 6. 7. выводит Код: javascript 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 09:02:46 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
из документации json_populate_record(base anyelement, from_json json, [, use_json_as_text bool=false] Expands the object in from_json to a row whose columns match the record type defined by base. Conversion will be best effort; columns in base with no corresponding key in from_json will be left null. A column may only be specified once. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 09:06:33 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
spпупкин написалрассказать вам, что вы делаете этим оператором ? или сами догадаетесь расскажите, будьте любезны - интересно узнатьну вы блин даёте делаем Код: plsql 1. и смотрим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 09:41:41 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
ЗЫ если не всё ещё понятно, делаем Код: plsql 1. и медитируем на результат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 09:44:03 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
qwwqЗЫ если не всё ещё понятно, делаем Код: plsql 1. и медитируем на результат медитировал долго над обеими случаями, но... ERROR: syntax error at or near "SELEСT" LINE 1: SELEСT (null::core.test).*; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 09:54:08 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
может будем разговаривать как специалисты, а не как работники околоакультных наук? скажите что вы имеете сказать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 10:23:33 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
sp, null в поля записи пишите Вы сами, а не json_populate_record ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 10:36:03 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
spможет будем разговаривать как специалисты, а не как работники околоакультных наук? скажите что вы имеете сказатьоколо - это ваше кредо вы даже простой селект выполнить не можете, что наводит. далее рассказываю, что происходит в Код: plsql 1. -- null кастится в тип core.test, т.е. создается объект (резултьтат выражения) типа core.test, все поля которого инициированы именно null - потому что вы сами об этом попросили. (ну а далее популейт занимается тем, что заменяет в этом созданном вами рекорде, те поля, чьи кеи он обнаруживает в hstore на те значения, которые он в hstore находит) -- т.е., как видите, никакой магии, и чтобы обнаружить отсутствие магии - совсем невредно было некоторое время помедитировать, а не надрачивать на непонятную формулу ~~ популейт(что-то-там) как на неведомое, но непременно магическое синтаксическое чЮдо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 11:47:43 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
sp ERROR: syntax error at or near "SELEСT" LINE 1: SELEСT (null::core.test).*;это у меня при полуслепом наборе translate англиница->руссица в SELECT отработал, что очевидно просто по подсветке синтаксиса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 11:54:35 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
sp, если не боитесь то можно типа такого попробовать :) Код: sql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 12:11:25 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
Ёшsp, если не боитесь то можно типа такого попробовать :) Код: sql 1. 2. 3. 4. 5. 6. 7. ну если ажсторе аж установлено - можно не лазать по систейблам, и слегка забыть как они устроены. а прямо Код: plsql 1. 2. 3. 4. 5. для FOREACH fld IN ARRAY akeys(hstore(null::test)) уже достаточно, нет ? кстати интересно, много такое поюзание ажсторе запросам к системным проиграет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 12:46:31 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
qwwqну если ажсторе аж установлено - можно не лазать по систейблама как значения по умолчанию получить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 12:50:03 |
|
||
|
Вставить данные в таблицу из JSON объекта
|
|||
|---|---|---|---|
|
#18+
Ёшqwwqну если ажсторе аж установлено - можно не лазать по систейблама как значения по умолчанию получить?а зачем ? пусть лошадь думает - ку неё голова большая тьфу пусть трактор пашет - он железный т.е пусть сам пж и получает - ему динамически INSERT надо правильно пошить а не values мне как-то вот так кажется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 12:54:29 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38308968&tid=1998426]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 319ms |

| 0 / 0 |
