在 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 擷取鍵

兩個資料表;一個是單一 Postgres JSON 欄位,另一個是 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...