PostgreSQL jsonからレコードを作成する

PostgreSQL jsonからレコードを作成する

PostgreSQLで、jsonからレコードを作成する手順を記述してます。「json_to_record」を使用することで可能です。AS句を使って実行します。

環境

  • OS CentOS Stream release 9
  • PostgreSQL 15.1
  • pgadmin4 6.16

jsonからレコードを作成

jsonからレコードを作成するには、「json_to_record」を使用します。
※「josnb」型には「jsonb_to_record」を使用します。

json_to_record(jsonデータ) AS句;

jsonb_to_record(jsonbデータ) AS句;

実際に、実行してみます。

SELECT
  *
FROM
  json_to_record(
    '{"name": "Tom", "age": 20, "address": ["tokyo", "japan"]}'
  ) AS x(name TEXT, age INT, address TEXT[]);

実行結果をみると、レコードが作成されていることが確認できます。

AS句を使用しないと、エラーが発生します。

SELECT
  *
FROM
  json_to_record(
    '{"name": "Tom", "age": 20, "address": ["tokyo", "japan"]}'
  );

ERROR:  "record"を返す関数では列定義リストが必要です
LINE 4:   json_to_record(
          ^
SQL 状態: 42601
文字: 19

実行結果

TYPEを指定

TYPEを指定して使用することも可能です。「address」を定義してから実行してみます。

CREATE TYPE address as (country TEXT, city TEXT);

実行します。

SELECT
  *
FROM
  jsonb_to_record(
    '{"address": {"country": "jp", "city": "tokyo"}}'
  ) AS x(address address);

実行結果