URL(URL [,Format] [,CompressionMethod])
-
Параметр
URLдолжен соответствовать структуре Uniform Resource Locator. Указанный URL должен указывать на сервер, использующий HTTP или HTTPS. Для получения ответа от сервера не требуются дополнительные заголовки. -
Formatдолжен поддерживаться ClickHouse в запросахSELECTи, при необходимости, в операцияхINSERT. Полный список поддерживаемых форматов см. в разделе Formats. Если этот аргумент не указан, ClickHouse автоматически определяет формат по суффиксу параметраURL. Если суффикс параметраURLне соответствует ни одному из поддерживаемых форматов, создать таблицу не удастся. Например, для выражения движкаURL('http://localhost/test.json')применяется форматJSON. -
CompressionMethodуказывает, должно ли тело HTTP-сообщения быть сжато. Если сжатие включено, HTTP-пакеты, отправляемые движком URL, содержат заголовок ‘Content-Encoding’, который указывает, какой метод сжатия используется.
URL, поддерживает соответствующий алгоритм сжатия.
Поддерживаемый CompressionMethod должен быть одним из следующих:
- gzip or gz
- deflate
- brotli or br
- lzma or xz
- zstd or zst
- lz4
- bz2
- snappy
- none
- auto
CompressionMethod не указан, по умолчанию используется auto. Это означает, что ClickHouse автоматически определяет метод сжатия по суффиксу параметра URL. Если суффикс соответствует одному из перечисленных выше методов сжатия, применяется соответствующее сжатие, в противном случае сжатие не используется.
Например, для выражения движка URL('http://localhost/test.gzip') применяется метод сжатия gzip, а для URL('http://localhost/test.fr') сжатие не используется, поскольку суффикс fr не соответствует ни одному из указанных выше методов сжатия.
Использование
INSERT и SELECT преобразуются в запросы POST и GET
соответственно. Для обработки запросов POST удалённый сервер должен поддерживать
Chunked transfer encoding.
Вы можете ограничить максимальное количество переходов по HTTP GET-перенаправлениям с помощью настройки max_http_get_redirects.
Пример
url_engine_table на сервере:
Детали реализации
- Чтение и запись могут выполняться параллельно
- Не поддерживаются:
- Операции
ALTERиSELECT...SAMPLE. - Индексы.
- Репликация.
- Операции
Виртуальные столбцы
_path— Путь кURL. Тип:LowCardinality(String)._file— Имя ресурсаURL. Тип:LowCardinality(String)._size— Размер ресурса в байтах. Тип:Nullable(UInt64). Если размер неизвестен, значение —NULL._time— Время последнего изменения файла. Тип:Nullable(DateTime). Если время неизвестно, значение —NULL._headers- HTTP-заголовки ответа. Тип:Map(LowCardinality(String), LowCardinality(String)).
Разрешение относительных URL
URL. Если задан url_base, URL, переданный в движок, разрешается относительно него в соответствии с RFC 3986. Полное описание правил разрешения приведено в документации по табличной функции url.
Пример
Настройки хранилища
- engine_url_skip_empty_files - позволяет пропускать пустые файлы при чтении. По умолчанию отключено.
- enable_url_encoding - позволяет включать/отключать декодирование/кодирование пути в URI. По умолчанию включено.
- url_base - базовый URL для разрешения относительных URL, передаваемых в движок.