Перейти к основному содержимому
Перейти к основному содержимому

Загрузка JSON

В этом разделе мы предполагаем, что данные JSON находятся в формате NDJSON (JSON с разделением по строкам), известном как JSONEachRow в ClickHouse. Это предпочтительный формат для загрузки JSON благодаря своей краткости и эффективному использованию пространства, но поддерживаются и другие для входных и выходных данных.

Рассмотрим следующий пример JSON, представляющий строку из набор данных Python PyPI:

Для загрузки этого объекта JSON в ClickHouse необходимо определить схему таблицы. Простая схема для этого показана ниже, где ключи JSON сопоставлены с именами столбцов:

Ключи сортировки

Мы выбрали ключ сортировки здесь с помощью ORDER BY. Для получения дополнительной информации о ключах сортировки и том, как их выбирать, смотрите здесь.

ClickHouse может загружать данные JSON в нескольких форматах, автоматически определяя тип по расширению и содержимому. Мы можем читать файлы JSON для вышеуказанной таблицы, используя функцию S3:

Обратите внимание, что мы не обязаны указывать формат файла. Вместо этого мы используем шаблон glob для чтения всех *.json.gz файлов в бакете. ClickHouse автоматически определяет, что формат — это JSONEachRow (ndjson) по расширению файла и содержимому. Формат можно явно указать через функции параметров в случае, если ClickHouse не может его обнаружить.

Сжатые файлы

Вышеуказанные файлы также сжаты. Это автоматически обнаруживается и обрабатывается ClickHouse.

Для загрузки строк из этих файлов мы можем использовать INSERT INTO SELECT:

Строки также могут быть загружены интерактивно, используя FORMAT clause например:

Эти примеры предполагают использование формата JSONEachRow. Поддерживаются и другие распространенные форматы JSON, примеры загрузки которых приведены здесь.

Выше представлено очень простое примеры загрузки данных JSON. Для более сложного JSON, включая вложенные структуры, смотрите руководство Проектирование схемы JSON.