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

Табличная функция file

Движок таблицы, предоставляющий табличный интерфейс для выполнения SELECT из файлов и INSERT в файлы, аналогично табличной функции s3. Используйте file при работе с локальными файлами, а s3 — при работе с бакетами в объектных хранилищах, таких как S3, GCS или MinIO. Функцию file можно использовать в запросах SELECT и INSERT для чтения из файлов и записи в них.

Синтаксис

Для запросов SELECT параметр path также может быть выражением, возвращающим Array(String):

Аргументы

Если аргумент structure опущен, ClickHouse определяет схему по самому формату. Для разных форматов используются разные имена столбцов и типы по умолчанию. Чтобы посмотреть схему для конкретного формата, используйте DESC с табличной функцией format.Например:

Возвращаемое значение

Таблица для чтения данных из файла или записи данных в файл.

Примеры записи в файл

Запись в файл в формате TSV

В результате данные записываются в файл test.tsv:

Запись в несколько файлов в формате TSV с разбиением на партиции

Если при вставке данных в табличную функцию типа file указать выражение PARTITION BY, для каждой партиции будет создан отдельный файл. Разбиение данных на отдельные файлы помогает повысить производительность операций чтения.
В результате данные записываются в три файла: test_1.tsv, test_2.tsv и test_3.tsv.

Примеры чтения из файла

SELECT из CSV-файла

Сначала задайте user_files_path в конфигурации сервера и подготовьте файл test.csv:
Затем загрузите данные из test.csv в таблицу и выберите первые две строки:

Вставка данных из файла в таблицу

Чтение данных из table.csv, находящегося в archive1.zip и/или archive2.zip:

Глоб-шаблоны в пути

В путях можно использовать глоб-шаблоны. Файлы должны соответствовать всему шаблону пути, а не только суффиксу или префиксу. Есть одно исключение: если путь указывает на существующий каталог и не содержит глоб-шаблонов, к пути неявно добавляется *, чтобы выбрать все файлы в каталоге.
  • * — Обозначает произвольное количество символов, кроме /, включая пустую строку.
  • ? — Обозначает один произвольный символ.
  • {some_string,another_string,yet_another_one} — Подставляет любую из строк 'some_string', 'another_string', 'yet_another_one'. Строки могут содержать символ /.
  • {N..M} — Обозначает любое число >= N и <= M.
  • ** - Обозначает все файлы в папке и во всех её вложенных папках.
Конструкции с {} аналогичны конструкциям в табличной функции remote и hdfs.

Примеры

Пример Предположим, есть следующие файлы с такими относительными путями:
  • some_dir/some_file_1
  • some_dir/some_file_2
  • some_dir/some_file_3
  • another_dir/some_file_1
  • another_dir/some_file_2
  • another_dir/some_file_3
Выполните запрос, чтобы получить общее количество строк во всех файлах:
Альтернативное выражение пути с тем же результатом:
Выполните запрос, чтобы получить общее количество строк в some_dir, используя неявный *:
Если в вашем списке файлов есть диапазоны чисел с ведущими нулями, используйте конструкцию с фигурными скобками для каждой цифры отдельно или символ ?.
Пример Запросите общее количество строк в файлах с именами file000, file001, … , file999:
Пример Рекурсивно запросите общее количество строк во всех файлах внутри каталога big_dir/:
Пример Рекурсивно получите общее количество строк из всех файлов file002 во всех папках каталога big_dir/:

Виртуальные столбцы

  • _path — Путь к файлу. Тип: LowCardinality(String).
  • _file — Имя файла. Тип: LowCardinality(String).
  • _size — Размер файла в байтах. Тип: Nullable(UInt64). Если размер файла неизвестен, значение — NULL.
  • _time — Время последнего изменения файла. Тип: Nullable(DateTime). Если время неизвестно, значение — NULL.

Настройка use_hive_partitioning

Когда параметр use_hive_partitioning установлен в 1, ClickHouse определяет партиционирование в стиле Hive в пути (/name=value/) и позволяет использовать столбцы партиции в запросе как виртуальные столбцы. Эти виртуальные столбцы будут иметь те же имена, что и в пути с партициями. Пример Использование виртуального столбца, созданного с помощью партиционирования в стиле Hive

Настройки

Последнее изменение 2 июля 2026 г.