Skip to main content
Skip to main content

file

Создаёт таблицу из файла. Данная табличная функция похожа на табличные функции url и hdfs.

Функция file может использоваться в запросах SELECT и INSERT при работе с движком таблиц File.

Синтаксис

Параметры

  • path — относительный путь до файла от user_files_path. Путь к файлу поддерживает следующие шаблоны в режиме доступа только для чтения *, ?, {abc,def} и {N..M}, где N, M — числа, 'abc', 'def' — строки.
  • formatформат файла.
  • structure — структура таблицы. Формат: 'colunmn1_name column1_ype, column2_name column2_type, ...'.
  • compression — Используемый тип сжатия для запроса SELECT или желаемый тип сжатия для запроса INSERT. Поддерживаемые типы сжатия: gz, br, xz, zst, lz4 и bz2.

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

Таблица с указанной структурой, предназначенная для чтения или записи данных в указанном файле.

Примеры

Настройка user_files_path и содержимое файла test.csv:

Получение данных из таблицы в файле test.csv и выборка первых двух строк из неё:

Получение первых 10 строк таблицы, содержащей 3 столбца типа UInt32, из CSV-файла:

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

Шаблоны поиска в компонентах пути

Путь к файлу может содержать шаблоны в режиме доступа только для чтения. Шаблоны могут содержаться в разных частях пути. Обрабатываться будут те и только те файлы, которые существуют в файловой системе и удовлетворяют всему шаблону пути.

  • * — заменяет любое количество любых символов кроме /, включая отсутствие символов.
  • ** — Заменяет любое количество любых символов, включая /, то есть осуществляет рекурсивный поиск по вложенным директориям.
  • ? — заменяет ровно один любой символ.
  • {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'

Запросим количество строк в этих файлах:

Запросим количество строк во всех файлах этих двух директорий:

Предупреждение

Если ваш список файлов содержит интервал с ведущими нулями, используйте конструкцию с фигурными скобками для каждой цифры по отдельности или используйте ?.

Пример

Запрос данных из файлов с именами file000, file001, ... , file999:

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

  • _path — путь к файлу.
  • _file — имя файла.

Смотрите также