PostgresでJSONデータを保存する

NoSQL入門

Jake Roach

Data Engineer

INSERT INTO と COPY でJSONをPostgresに投入

INSERT INTO students (school, age, address, parent_meta) VALUES (
    'GP',
    18,
    'U',
    '{\"guardian\": \"mother\", ...  \"P2\": \"at_home\"}}'
);

COPY ... FROM を使ってファイルの内容でテーブルを埋める

COPY students FROM 'students.csv' DELIMITER ',' CSV, HEADER;
NoSQL入門

表データをJSONに変換

表形式データのテーブルと、row_to_json 関数でそのテーブルをJSONにした結果のテーブル。

row_to_json 関数

  • 行を JSON に変換
  • row() と併用し、列名を渡す
SELECT
    row_to_json(row(
        school,
        age,
        address
    ))
FROM students;
NoSQL入門

JSONからキーを抽出

2つのテーブル。1つはPostgresのJSON型の単一列、もう1つは json_object_keys 関数の出力。

json_object_keys 関数

  • JSON 型列からキーを抽出
SELECT
    json_object_keys(parent_meta)
FROM students;
  • DISTINCT と組み合わせて一意なキーを取得
SELECT
    DISTINCT json_object_keys(parent_meta)
FROM students;
NoSQL入門

まとめ

SELECT
    row_to_json(row(
        <column-1>,
        <column-2>,
        ...
    ))
FROM <table-name>;
SELECT
    DISTINCT json_object_keys(parent_meta)
FROM <table-name>;
NoSQL入門

練習しましょう!

NoSQL入門

Preparing Video For Download...