Хранение данных JSON в Postgres

Введение в 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

Таблица с табличными данными и таблица с теми же данными в формате JSON после применения функции row_to_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...