我正在尝试通过组合各种列来生成JSON字符串,并将JSON保存到具有JSON数据类型的Postgres表中。从documentation可以清楚地了解到如何读取feom JSON字符串。
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将是Postgres中的JSON数据类型。
任何帮助将不胜感激。
答案 0 :(得分:2)
您可以使用JSON:setElement从属性创建JSON
from OutputStream
select json:setElement("{}", "$", json:getString(json,"$.name"), "myname") as value
insert into TempStream;
答案 1 :(得分:-2)
我做了类似的事情,但是我将数据发送到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;