Обзор JSON
DuckDB поддерживает SQL-функции, полезные для чтения значений из существующего JSON и создания новых данных JSON. JSON поддерживается с расширением json, которое поставляется с большинством дистрибутивов DuckDB и автоматически загружается при первом использовании. Если вы хотите установить или загрузить его вручную, обратитесь к странице “Установка и загрузка”.
О JSON
JSON — это открытый стандартный формат файлов и формат обмена данными, который использует удобочитаемый текст для хранения и передачи объектов данных, состоящих из пар атрибут-значение и массивов (или других сериализуемых значений). Хотя он не является очень эффективным форматом для табличных данных, он широко используется, особенно как формат обмена данными.
Индексация
Предупреждение Следуя конвенциям PostgreSQL, DuckDB использует индексацию с 1 для своих
ARRAYиLISTтипов данных, но индексацию с 0 для типа данных JSON.
Примеры
Загрузка JSON
Чтение файла JSON из диска, автоматическое определение параметров:
SELECT * FROM 'todos.json';
Использование функции read_json с пользовательскими параметрами:
SELECT *
FROM read_json('todos.json',
format = 'array',
columns = {userId: 'UBIGINT',
id: 'UBIGINT',
title: 'VARCHAR',
completed: 'BOOLEAN'}); Чтение файла JSON из стандартного ввода, автоматическое определение параметров:
cat data/json/todos.json | duckdb -c "SELECT * FROM read_json('/dev/stdin')" Чтение файла JSON в таблицу:
CREATE TABLE todos (userId UBIGINT, id UBIGINT, title VARCHAR, completed BOOLEAN); COPY todos FROM 'todos.json';
В качестве альтернативы, создайте таблицу без явного указания схемы с помощью CREATE TABLE ... AS SELECT:
CREATE TABLE todos AS
SELECT * FROM 'todos.json'; Запись JSON
Запись результата запроса в файл JSON:
COPY (SELECT * FROM todos) TO 'todos.json';
Тип данных JSON
Создание таблицы со столбцом для хранения данных JSON и вставка данных в него:
CREATE TABLE example (j JSON);
INSERT INTO example VALUES
('{ "family": "anatidae", "species": [ "duck", "goose", "swan", null ] }'); Извлечение данных JSON
Получение значения ключа family:
SELECT j.family FROM example;
"anatidae"
Извлечение значения ключа family с выражением JSONPath:
SELECT j->'$.family' FROM example;
"anatidae"
Извлечение значения ключа family с выражением JSONPath как VARCHAR:
SELECT j->>'$.family' FROM example;
anatidae
Страницы в этом разделе
© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/data/json/overview.html