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
— имя файла.
Смотрите также