Сиддхи - Как создать строку JSON - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь сгенерировать строку JSON путем объединения различных столбцов и сохранить JSON в таблицу Postgres, имеющую тип данных JSON. Из документации ясно о чтении строки JSON feom.

define stream InputStream(json string);
from InputStream
select json:getString(json,"$.name") as name
insert into OutputStream;

Но можем ли мы создать JSON в полете и вставить в таблицу? Что-то вроде ...

select '{"myname":json:getString(json,"$.name")}' as nameJSON
insert into postgresDB

Где nameJSON будет типом данных JSON в Postgres.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 31 марта 2019

Вы можете использовать JSON: setElement для создания JSON из атрибутов

from OutputStream
select json:setElement("{}", "$", json:getString(json,"$.name"), "myname") as value
insert into TempStream;
0 голосов
/ 30 марта 2019

Я сделал нечто подобное, но я отправляю данные в Elasticsearch вместо postgresDB.

Вы можете использовать функцию json: toObject для генерации объекта из строки. Для генерации строки я использовал script .

define function myfunction[JavaScript] return string {
    var name = data[0];
    return '{myname: '+name+ '}';
};

ПРИМЕЧАНИЕ: Это только пример, мой оригинальный код генерирует более крупный и сложный JSON. Хорошая особенность этого метода заключается в том, что мы также можем записывать массивы в строку (массивы JSON).

А для записи в БД:

from SomeStream
select json:toObject(myfunction(json:getString(json,"$.name"))) as nameJSON
insert into postgresDB;
...