ClickHouse在设计之初,就考虑了在不建表的情况下,也可以进行数据查询的可能,以此实现了直接查询文件系统, 异构数据库等中结构化文件的功能。
文件:
语法:
SELECT [COLUMNs] FROM [FileSystem]('uri', 'CSV', '结构化定义');
例如:
SELECT id, name, job
FROM
hdfs('hdfs://localhost:8020/doit18/user2.csv', 'id String, name String, job String');
远程:
允许访问远程clickhouse服务器,无需创建Distributed表 语法:
SELECT [COLUMNs] FROM remote('addresses_expr', db, table[, 'user'[, 'password']])
mysql
允许SELECT要对存储在远程MySQL服务器上的数据执行查询。
SELECT [COLUMNs] FROM mysql('host:port', 'database', 'table', 'user', 'password'[, replace_query, 'on_duplicate_clause']);
参数
- host:port - MySQL server address.
- database - Remote database name
- table - Remote table name
- user - MySQL user
- password - User password.
- replace_query - Flag that convers INSERT INTO 查询到 REPLACE INTO 如果replace_query=1, 查询被替换。
- on_duplicate_clause — The ON DUPLICATE KEY on_duplicate_clause 表达式被添加到 INSERT 查询。
Example: `INSERT INTO t (c1,c2) VALUES ('a', 2) ON DUPLICATE KEY UPDATE c2 = c2 + 1`, where `on_duplicate_clause` is `UPDATE c2 = c2 + 1`. See the MySQL documentation to find which `on_duplicate_clause` you can use with the `ON DUPLICATE KEY` clause.
To specify `on_duplicate_clause` you need to pass `0` to the `replace_query` parameter. If you simultaneously pass `replace_query = 1` and `on_duplicate_clause`, ClickHouse generates an exception.
例如:
SELECT * FROM mysql('localhost:3306', 'test', 'test', 'bayonet', '123');