url 表函数
url
函数从给定的 URL
创建一个具有指定 format
和 structure
的表。
url
函数可以在数据的 SELECT
和 INSERT
查询中使用,数据来源于 URL 表。
语法
参数
参数 | 描述 |
---|---|
URL | HTTP 或 HTTPS 服务器地址,能够接受 GET 或 POST 请求(分别对应 SELECT 或 INSERT 查询)。类型: String。 |
format | 数据的 Format。类型: String。 |
structure | 表结构,格式为 'UserID UInt64, Name String' 。确定列名称和类型。类型: String。 |
headers | 以 'headers('key1'='value1', 'key2'='value2')' 格式的头信息。可以为 HTTP 调用设置头信息。 |
返回值
一个具有指定格式和结构的表,并且数据来自定义的 URL
。
示例
从 HTTP 服务器获取包含 String
和 UInt32 类型列的表的前 3 行,该服务器以 CSV 格式响应。
将数据从 URL
插入到表中:
URL 中的通配符
大括号 { }
中的模式用于生成一组分片或指定故障转移地址。支持的模式类型和示例见 remote 函数的描述。
模式中的字符 |
用于指定故障转移地址。它们按模式中列出的顺序进行迭代。生成的地址数量受到 glob_expansion_max_elements 设置的限制。
虚拟列
_path
—URL
的路径。类型:LowCardinality(String)
。_file
—URL
的资源名称。类型:LowCardinality(String)
。_size
— 资源的字节大小。类型:Nullable(UInt64)
。如果大小未知,值为NULL
。_time
— 文件的最后修改时间。类型:Nullable(DateTime)
。如果时间未知,值为NULL
。_headers
- HTTP 响应头。类型:Map(LowCardinality(String), LowCardinality(String))
。
Hive 风格分区
当将 use_hive_partitioning
设置为 1 时,ClickHouse 会在路径中检测 Hive 风格的分区 (/name=value/
),并允许在查询中将分区列用作虚拟列。这些虚拟列将与分区路径中的名称相同,但以 _
开头。
示例
使用 Hive 风格分区创建的虚拟列
存储设置
- engine_url_skip_empty_files - 允许在读取时跳过空文件。默认情况下禁用。
- enable_url_encoding - 允许启用/禁用 URI 中路径的解码/编码。默认情况下启用。
权限
url
函数需要 CREATE TEMPORARY TABLE
权限。因此,无法用于具有 readonly = 1 设置的用户。至少需要 readonly = 2。