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)