TabSeparated, Native и т. д.).
Сценарии использования:
- Экспорт данных из ClickHouse в файл.
- Преобразование данных из одного формата в другой.
- Обновление данных в ClickHouse путем редактирования файла на диске.
В настоящее время этот движок недоступен в ClickHouse Cloud; вместо этого используйте табличную функцию S3.
Использование в ClickHouse Server
Format задаёт один из доступных форматов файлов. Чтобы выполнять
запросы SELECT, формат должен поддерживаться для ввода, а для выполнения
запросов INSERT — для вывода. Доступные форматы перечислены в разделе
Форматы.
ClickHouse не позволяет указывать путь в файловой системе для File. Вместо этого используется каталог, заданный настройкой path в конфигурации сервера.
При создании таблицы с помощью File(Format) в этом каталоге создаётся пустой подкаталог. Когда в эту таблицу записываются данные, они сохраняются в файле data.Format внутри этого подкаталога.
Вы можете вручную создать этот подкаталог и файл в файловой системе сервера, а затем с помощью ATTACH привязать его к таблице с соответствующим именем, чтобы выполнять запросы к данным из этого файла.
Будьте осторожны с этой возможностью, поскольку ClickHouse не отслеживает внешние изменения таких файлов. Результат одновременной записи через ClickHouse и вне ClickHouse не определён.
Пример
file_engine_table:
/var/lib/clickhouse/data/default/file_engine_table.
2. Вручную создайте файл /var/lib/clickhouse/data/default/file_engine_table/data.TabSeparated со следующим содержимым:
Использование в ClickHouse-local
Format принимает путь к файлу. Стандартные потоки ввода/вывода можно задавать числовыми или понятными человеку именами, например 0 или stdin, 1 или stdout. Сжатые файлы можно читать и записывать на основе дополнительного параметра движка или расширения файла (gz, br или xz).
Пример:
Подробности реализации
- Несколько запросов
SELECTмогут выполняться одновременно, но запросыINSERTбудут ждать друг друга. - Поддерживается создание нового файла с помощью запроса
INSERT. - Если файл уже существует,
INSERTдобавит в него новые значения. - Не поддерживаются:
ALTERSELECT ... SAMPLE- Индексы
- Репликация
PARTITION BY
PARTITION BY — необязательный параметр. Можно создавать отдельные файлы, разбивая данные на партиции по ключу партиционирования. В большинстве случаев ключ партиционирования не нужен, а если он всё же нужен, то, как правило, достаточно партиционирования не более детального, чем по месяцам. Партиционирование не ускоряет запросы (в отличие от выражения ORDER BY). Никогда не используйте слишком детальное партиционирование. Не разбивайте данные на партиции по идентификаторам или именам клиентов (вместо этого сделайте идентификатор или имя клиента первым столбцом в выражении ORDER BY).
Для партиционирования по месяцам используйте выражение toYYYYMM(date_column), где date_column — столбец с датой типа Date. Имена партиций здесь имеют формат "YYYYMM".
Виртуальные столбцы
_path— Путь к файлу. Тип:LowCardinality(String)._file— Имя файла. Тип:LowCardinality(String)._size— Размер файла в байтах. Тип:Nullable(UInt64). Если размер неизвестен, значение —NULL._time— Время последнего изменения файла. Тип:Nullable(DateTime). Если время неизвестно, значение —NULL.
Настройки
- engine_file_empty_if_not_exists - позволяет считывать пустые данные из несуществующего файла. По умолчанию отключено.
- engine_file_truncate_on_insert - позволяет усекать файл перед вставкой в него. По умолчанию отключено.
- engine_file_allow_create_multiple_files - позволяет создавать новый файл при каждой вставке, если format имеет suffix. По умолчанию отключено.
- engine_file_skip_empty_files - позволяет пропускать пустые файлы при чтении. По умолчанию отключено.
- storage_file_read_method - метод чтения данных из файла в хранилище; одно из значений:
read,pread,mmap. Методmmapне применяется к clickhouse-server (он предназначен для clickhouse-local). Значение по умолчанию:preadдля clickhouse-server,mmapдля clickhouse-local.