|
|
|
Q: Golang драйвер не поддерживает array of types. Как быть?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Исходные данные Версия 9.4. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Пишу утилиту на языке Go (golang), которая считывает записи из таблицы. Код: plsql 1. Гоушный драйвер для Go пока не очень продвинутый, в частности не может нормально смаппить при чтении array of type в соответствующий массив Go. Поэтому если поле items считывается в массив структур item_arr Код: golang 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. фетч записи падает с ошибкой. Океееей. Делаю так Код: plsql 1. и поле items считываю в строковую переменную. Работает. Правда нужно распарсить эту строку. Пробую другой ваирант Код: plsql 1. и поле items считываю в переменную массив байт. Работает. Вот к примеру массив из трех элементов (коды байтов) 7b22285c22323031342d31302d31362030303a30303a30305c222c332c312c31312c32362e3936373332372c33302c383229222c22285c22323 031342d31302d31362030303a31353a30305c222c322c322c36352c38322e3533363430352c32312c343029222c22285c22323031342d31302d 31362030303a33303a30305c222c322c322c38352c31372e3831343530352c39392c363629227d Массив байт нужно распарсить. Вопрос: Куда смотреть? Что искать? Где читать о форме передачи array of types на клиента? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2015, 12:30 |
|
||
|
Q: Golang драйвер не поддерживает array of types. Как быть?
|
|||
|---|---|---|---|
|
#18+
Поролоновый слон, Вариант - unnest. Соответственно, отдельный запрос на каждую строку item_rows или размножение данных мастера на строки детализации (для 9.4 есть lateral). Впрочем, для реляционной субд логично строки в таблицах, а не в массивах. Так что так или иначе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2015, 14:05 |
|
||
|
Q: Golang драйвер не поддерживает array of types. Как быть?
|
|||
|---|---|---|---|
|
#18+
Поролоновый слон, to_json() не пробовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2015, 14:23 |
|
||
|
Q: Golang драйвер не поддерживает array of types. Как быть?
|
|||
|---|---|---|---|
|
#18+
@p2., да, пробовал через unnest - работает, но на каждую запись два запроса :( как то лишка. согласен с реляционной моделью, но у нас тут несколько млрд записей и постоянный прирост. Ищем варианты. В реляционной модели у нас все сейчас все лежит в Oracle, но не очень довольны стоимостью дальнейшего расширения. @Lonepsycho, пробовал - работает, по идее аналогично ::varchar, хотя безусловно json парсить проще. По поводу вставки сделал функцию Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. а в коде на Go вставляю с вызовом Код: plsql 1. где $1 к примеру = '("2014-09-01",1,2,3,44.55,6,7)~^~("2014-09-01",1,2,3,44.55,6,70)' То есть workarround работает, теперь хочется понять как кодировать/декодировать в исходном двоичном формате, может получится помочь доработать драйвер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2015, 01:00 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39055097&tid=1997768]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
155ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 463ms |

| 0 / 0 |
