url
url
函数根据给定的 format
和 structure
从 URL
创建一个表。
url
函数可用于 SELECT
和 INSERT
查询,以处理 URL 表中的数据。
语法
url(URL [,format] [,structure] [,headers])
参数
URL
— HTTP 或 HTTPS 服务器地址,可以接受GET
或POST
请求(分别对应于SELECT
或INSERT
查询)。类型:字符串。format
— 数据的 格式。类型:字符串。structure
—'UserID UInt64, Name String'
格式的表结构。确定列名和类型。类型:字符串。headers
-'headers('key1'='value1', 'key2'='value2')'
格式的请求头。您可以为 HTTP 调用设置请求头。
返回值
具有指定格式和结构的表,以及来自定义 URL
的数据。
示例
获取 HTTP 服务器中包含 String
和 UInt32 类型列的表的首 3 行,该服务器以 CSV 格式进行响应。
SELECT * FROM url('http://127.0.0.1:12345/', CSV, 'column1 String, column2 UInt32', headers('Accept'='text/csv; charset=utf-8')) LIMIT 3;
将数据从 URL
插入到表中
CREATE TABLE test_table (column1 String, column2 UInt32) ENGINE=Memory;
INSERT INTO FUNCTION url('http://127.0.0.1:8123/?query=INSERT+INTO+test_table+FORMAT+CSV', 'CSV', 'column1 String, column2 UInt32') VALUES ('http interface', 42);
SELECT * FROM test_table;
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 将检测路径 (/name=value/
) 中的 Hive 样式分区,并允许在查询中使用分区列作为虚拟列。这些虚拟列将与分区路径中的名称相同,但以 _
开头。
示例
使用使用 Hive 样式分区创建的虚拟列
SET use_hive_partitioning = 1;
SELECT * from url('http://data/path/date=*/country=*/code=*/*.parquet') where _date > '2020-01-01' and _country = 'Netherlands' and _code = 42;
存储设置
- engine_url_skip_empty_files - 允许在读取时跳过空文件。默认情况下禁用。
- enable_url_encoding - 允许启用/禁用 uri 中路径的解码/编码。默认情况下启用。
另请参阅