Sql 将对象数组插入表中

Sql 将对象数组插入表中,sql,arrays,json,postgresql,Sql,Arrays,Json,Postgresql,我有以下数组: arr = [{"a":1, "b": 2}, {"a": 1, "b": 3}] 使用来自的一些帮助,我尝试像这样解析这些元素: CREATE OR REPLACE FUNCTION jsonb_arr2text_arr(_js JSONB) RETURNS text[] AS $func$ SELECT ARRAY(SELECT jsonb_array_elements_text(_js)); $func$ LANGUAGE sql IMMUTABLE; 这将返回

我有以下数组:

arr = [{"a":1, "b": 2}, {"a": 1, "b": 3}]
使用来自的一些帮助,我尝试像这样解析这些元素:

CREATE OR REPLACE FUNCTION jsonb_arr2text_arr(_js JSONB)
  RETURNS text[] AS
  $func$
SELECT ARRAY(SELECT jsonb_array_elements_text(_js));
$func$
LANGUAGE sql IMMUTABLE;
这将返回:

"{{""a"": 1, ""b"": 2},{""a"": 1, ""b"": 3}}"
现在,我想将这些值插入到一个表中,每行插入2个
fkeys

FOR LOOP OVER ARR:
    INSERT INTO table VALUES (DEFAULT, somefkeyvalue, arr[i].a, arr[i].b);

如何将上面的
查询
写入真实对象?

arr
是一个json数组。对吗?
使用
jsonb_数组_元素
将其扩展为一组jsonb值。在您的特定示例中有更多json数组。有点像最新的json数组。
然后使用“a”和“b”键的引用(
->
运算符)来获取插入值

差不多

INSERT INTO table (somefk, a_value, b_value)
SELECT
  'somefk',
  datajson->'a',
  datajson->'b'
FROM jsonb_array_elements('[{"a":1, "b": 2}, {"a": 1, "b": 3}]'::jsonb) AS t(datajson)

arr
是一个json数组。对吗?
使用
jsonb_数组_元素
将其扩展为一组jsonb值。在您的特定示例中有更多json数组。有点像最新的json数组。
然后使用“a”和“b”键的引用(
->
运算符)来获取插入值

差不多

INSERT INTO table (somefk, a_value, b_value)
SELECT
  'somefk',
  datajson->'a',
  datajson->'b'
FROM jsonb_array_elements('[{"a":1, "b": 2}, {"a": 1, "b": 3}]'::jsonb) AS t(datajson)