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

Загрузка 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.