在 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...