別のJSON配列(配列の配列)からのJSON配列をjson_populate_recordset()
を使用してテーブルに挿入しようとしていますが、次のエラーが発生します。
SQL Error [22023]: ERROR: argument of json_populate_recordset must be an array of objects
これが私がやろうとしていることの例です:
DO $$
DECLARE
j json;
BEGIN
j := '[[{"a":1,"b":1.23},{"a":2,"b":2.34}],
[{"a":2,"b":1.23},{"a":3,"b":2.34}],
[{"a":3,"b":1.23},{"a":4,"b":2.34}]]'::json;
CREATE TEMPORARY TABLE testj (j json);
INSERT INTO testj
SELECT * FROM json_populate_recordset(null::testj, j);
DROP TABLE testj;
END
$$;
ファイナルテーブルは次のようになります。
j |
------------------------------------|
[{"a":1,"b":1.23},{"a":2,"b":2.34}] |
[{"a":1,"b":1.23},{"a":2,"b":2.34}] |
[{"a":1,"b":1.23},{"a":2,"b":2.34}] |
PostgreSQL 9.5データベースを使用しています。何が悪いのですか?
代わりにPostgres 9.5で利用可能な関数json_array_elements()
を使用してください。
マニュアルの引用 、それ...
JSON配列をJSON値のセットに展開します。
また、値はJSON配列(またはその他のJSON値)にすることができます。
INSERT INTO testj (j)
SELECT * FROM json_array_elements(j);