我正在尝试通过组合各种列来生成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数据类型。
任何帮助将不胜感激。
您可以使用JSON:setElement从属性创建JSON
from OutputStream
select json:setElement("{}", "$", json:getString(json,"$.name"), "myname") as value
insert into TempStream;
我做了类似的事情,但我将数据发送到Elasticsearch而不是postgresDB。
您可以使用json:toObject函数从字符串生成对象。为了生成字符串,我使用了script。
define function myfunction[JavaScript] return string {
var name = data[0];
return '{myname: '+name+ '}';
};
注意:这只是一个示例,我的原始代码生成更大更复杂的JSON。这种方法的一个好处是我们也可以在字符串中编写数组(JSON Arrays)。
并在DB中写:
from SomeStream
select json:toObject(myfunction(json:getString(json,"$.name"))) as nameJSON
insert into postgresDB;