Merge pull request #21771 from zhangjmruc/master

update translations for some table functions
This commit is contained in:
Kruglov Pavel 2021-03-19 14:26:21 +03:00 committed by GitHub
commit 8f512cca00
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 208 additions and 173 deletions

View File

@ -1,23 +1,25 @@
---
machine_translated: true
machine_translated_rev: 72537a2d527c63c07aa5d2361a8829f3895cf2bd
toc_priority: 37
toc_title: "\u6587\u4EF6"
toc_title: file
---
# 文件 {#file}
# file {#file}
从文件创建表。 此表函数类似于 [url](url.md) 和 [hdfs](hdfs.md) 一些的。
从文件创建表。 此表函数类似于 [url](../../sql-reference/table-functions/url.md) 和 [hdfs](../../sql-reference/table-functions/hdfs.md)。
`file` 函数可用于对[File](../../engines/table-engines/special/file.md) 表中的数据进行 `SELECT``INSERT` 查询。
**语法**
``` sql
file(path, format, structure)
```
**输入参数**
**参数**
- `path`The relative path to the file from [user_files_path](../../operations/server-configuration-parameters/settings.md#server_configuration_parameters-user_files_path). 只读模式下的globs后的文件支持路径: `*`, `?`, `{abc,def}``{N..M}` 哪里 `N`, `M` — numbers, \``'abc', 'def'` — strings.
- `format` The [格式](../../interfaces/formats.md#formats) 的文件
- `structure`Structure of the table. Format `'column1_name column1_type, column2_name column2_type, ...'`.
- `path` — [user_files_path](../../operations/server-configuration-parameters/settings.md#server_configuration_parameters-user_files_path)中文件的相对路径。在只读模式下,文件路径支持以下通配符: `*`, `?`, `{abc,def}``{N..M}`,其中 `N`, `M` 是数字, \``'abc', 'def'` 是字符串。
- `format`文件的[格式](../../interfaces/formats.md#formats)
- `structure`表的结构。格式 `'column1_name column1_type, column2_name column2_type, ...'`
**返回值**
@ -25,7 +27,7 @@ file(path, format, structure)
**示例**
设置 `user_files_path` 和文件的内容 `test.csv`:
设置 `user_files_path` 和文件 `test.csv` 的内容:
``` bash
$ grep user_files_path /etc/clickhouse-server/config.xml
@ -37,12 +39,10 @@ $ cat /var/lib/clickhouse/user_files/test.csv
78,43,45
```
从`test.csv` 并从中选择前两行:
`test.csv` 中的表中获取数据,并从中选择前两行:
``` sql
SELECT *
FROM file('test.csv', 'CSV', 'column1 UInt32, column2 UInt32, column3 UInt32')
LIMIT 2
SELECT * FROM file('test.csv', 'CSV', 'column1 UInt32, column2 UInt32, column3 UInt32') LIMIT 2;
```
``` text
@ -52,25 +52,40 @@ LIMIT 2
└─────────┴─────────┴─────────┘
```
从CSV文件获取包含3列 [UInt32](../../sql-reference/data-types/int-uint.md) 类型的表的前10行:
``` sql
-- getting the first 10 lines of a table that contains 3 columns of UInt32 type from a CSV file
SELECT * FROM file('test.csv', 'CSV', 'column1 UInt32, column2 UInt32, column3 UInt32') LIMIT 10
SELECT * FROM file('test.csv', 'CSV', 'column1 UInt32, column2 UInt32, column3 UInt32') LIMIT 10;
```
**路径中的水珠**
将文件中的数据插入表中:
多个路径组件可以具有globs。 对于正在处理的文件应该存在并匹配到整个路径模式(不仅后缀或前缀)。
``` sql
INSERT INTO FUNCTION file('test.csv', 'CSV', 'column1 UInt32, column2 UInt32, column3 UInt32') VALUES (1, 2, 3), (3, 2, 1);
SELECT * FROM file('test.csv', 'CSV', 'column1 UInt32, column2 UInt32, column3 UInt32');
```
- `*` — Substitutes any number of any characters except `/` 包括空字符串。
- `?` — Substitutes any single character.
- `{some_string,another_string,yet_another_one}` — Substitutes any of strings `'some_string', 'another_string', 'yet_another_one'`.
- `{N..M}` — Substitutes any number in range from N to M including both borders.
``` text
┌─column1─┬─column2─┬─column3─┐
│ 1 │ 2 │ 3 │
│ 3 │ 2 │ 1 │
└─────────┴─────────┴─────────┘
```
建筑与 `{}` 类似于 [远程表功能](../../sql-reference/table-functions/remote.md)).
**路径中的通配符**
多个路径组件可以具有通配符。 对于要处理的文件必须存在并与整个路径模式匹配(不仅后缀或前缀)。
- `*` — 替换任意数量的任何字符,除了 `/` 包括空字符串。
- `?` — 替换任何单个字符。
- `{some_string,another_string,yet_another_one}` — 替换任何字符串 `'some_string', 'another_string', 'yet_another_one'`
- `{N..M}` — 替换范围从N到M的任何数字包括两个边界
使用 `{}` 的构造类似于 [remote](../../sql-reference/table-functions/remote.md))表函数。
**示例**
1. 假设我们有几个具有以下相对路径的文件:
假设我们有几个文件,这些文件具有以下相对路径:
- some_dir/some_file_1
- some_dir/some_file_2
@ -79,18 +94,14 @@ SELECT * FROM file('test.csv', 'CSV', 'column1 UInt32, column2 UInt32, column3 U
- another_dir/some_file_2
- another_dir/some_file_3
1. 查询这些文件中的行数:
<!-- -->
查询这些文件中的行数:
``` sql
SELECT count(*)
FROM file('{some,another}_dir/some_file_{1..3}', 'TSV', 'name String, value UInt32')
```
1. 查询这两个目录的所有文件中的行数:
<!-- -->
查询这两个目录的所有文件中的行数:
``` sql
SELECT count(*)
@ -98,11 +109,11 @@ FROM file('{some,another}_dir/*', 'TSV', 'name String, value UInt32')
```
!!! warning "警告"
如果您的文件列表包含带前导零的数字范围,请单独使用带大括号的构造或使用 `?`.
如果您的文件列表包含带前导零的数字范围,请对每个数字分别使用带有大括号的结构或使用 `?`
**示例**
从名为 `file000`, `file001`, … , `file999`:
从名为 `file000`, `file001`, … , `file999`的文件中查询数据:
``` sql
SELECT count(*)
@ -111,8 +122,8 @@ FROM file('big_dir/file{0..9}{0..9}{0..9}', 'CSV', 'name String, value UInt32')
## 虚拟列 {#virtual-columns}
- `_path`Path to the file.
- `_file`Name of the file.
- `_path`文件路径。
- `_file`文件名称。
**另请参阅**

View File

@ -1,15 +1,13 @@
---
machine_translated: true
machine_translated_rev: 72537a2d527c63c07aa5d2361a8829f3895cf2bd
toc_priority: 47
toc_title: generateRandom
---
# generateRandom {#generaterandom}
使用给定的模式生成随机数据。
允许用数据填充测试表。
支持可以存储在表中的所有数据类型,除了 `LowCardinality``AggregateFunction`.
生成具用给定的模式的随机数据。
允许用数据填充测试表。
支持所有可以存储在表中的数据类型, `LowCardinality``AggregateFunction`除外。
``` sql
generateRandom('name TypeName[, name TypeName]...', [, 'random_seed'[, 'max_string_length'[, 'max_array_length']]]);
@ -17,15 +15,15 @@ generateRandom('name TypeName[, name TypeName]...', [, 'random_seed'[, 'max_stri
**参数**
- `name`Name of corresponding column.
- `TypeName`Type of corresponding column.
- `max_array_length`Maximum array length for all generated arrays. Defaults to `10`.
- `max_string_length`Maximum string length for all generated strings. Defaults to `10`.
- `random_seed`Specify random seed manually to produce stable results. If NULL — seed is randomly generated.
- `name`对应列的名称。
- `TypeName`对应列的类型。
- `max_array_length`生成数组的最大长度。 默认为10。
- `max_string_length`生成字符串的最大长度。 默认为10。
- `random_seed`手动指定随机种子以产生稳定的结果。 如果为NULL-种子是随机生成的。
**返回值**
具有请求架构的表对象。
具有请求模式的表对象。
## 用法示例 {#usage-example}

View File

@ -1,13 +1,11 @@
---
machine_translated: true
machine_translated_rev: 72537a2d527c63c07aa5d2361a8829f3895cf2bd
toc_priority: 45
toc_title: hdfs
---
# hdfs {#hdfs}
从HDFS中的文件创建表。 此表函数类似于 [url](url.md) 和 [文件](file.md) 一些的
根据HDFS中的文件创建表。 该表函数类似于 [url](url.md) 和 [文件](file.md)。
``` sql
hdfs(URI, format, structure)
@ -15,9 +13,9 @@ hdfs(URI, format, structure)
**输入参数**
- `URI`The relative URI to the file in HDFS. Path to file support following globs in readonly mode: `*`, `?`, `{abc,def}``{N..M}` 哪里 `N`, `M` — numbers, \``'abc', 'def'` — strings.
- `format`The [格式](../../interfaces/formats.md#formats) 的文件
- `structure`Structure of the table. Format `'column1_name column1_type, column2_name column2_type, ...'`.
- `URI`HDFS中文件的相对URI。 在只读模式下,文件路径支持以下通配符: `*`, `?`, `{abc,def}``{N..M}` ,其中 `N`, `M` 是数字, \``'abc', 'def'` 是字符串。
- `format`文件的[格式](../../interfaces/formats.md#formats)
- `structure`表的结构。格式 `'column1_name column1_type, column2_name column2_type, ...'`
**返回值**
@ -25,7 +23,7 @@ hdfs(URI, format, structure)
**示例**
`hdfs://hdfs1:9000/test` 并从中选择前两行:
来自 `hdfs://hdfs1:9000/test` 并从中选择前两行:
``` sql
SELECT *
@ -40,20 +38,20 @@ LIMIT 2
└─────────┴─────────┴─────────┘
```
**路径中的水珠**
**路径中的通配符**
多个路径组件可以具有globs。 对于正在处理的文件应该存在并匹配到整个路径模式(不仅后缀或前缀)。
多个路径组件可以具有通配符。 对于要处理的文件必须存在并与整个路径模式匹配(不仅后缀或前缀)。
- `*`Substitutes any number of any characters except `/` 包括空字符串。
- `?`Substitutes any single character.
- `{some_string,another_string,yet_another_one}`Substitutes any of strings `'some_string', 'another_string', 'yet_another_one'`.
- `{N..M}`Substitutes any number in range from N to M including both borders.
- `*`替换任意数量的任何字符,除了 `/` 包括空字符串。
- `?`替换任何单个字符。
- `{some_string,another_string,yet_another_one}`替换任何字符串 `'some_string', 'another_string', 'yet_another_one'`
- `{N..M}`替换范围从N到M的任何数字包括两个边界
建筑与 `{}` 类似于 [远程表功能](../../sql-reference/table-functions/remote.md)).
使用 `{}` 的构造类似于 [remote](../../sql-reference/table-functions/remote.md))表函数。
**示例**
1. 假设我们在HDFS上有几个具有以下Uri的文件:
1. 假设我们在HDFS上有几个带有以下URI的文件:
- hdfs://hdfs1:9000/some_dir/some_file_1
- hdfs://hdfs1:9000/some_dir/some_file_2
@ -62,7 +60,7 @@ LIMIT 2
- hdfs://hdfs1:9000/another_dir/some_file_2
- hdfs://hdfs1:9000/another_dir/some_file_3
1. 查询这些文件中的行数:
2. 查询这些文件中的行数:
<!-- -->
@ -71,7 +69,7 @@ SELECT count(*)
FROM hdfs('hdfs://hdfs1:9000/{some,another}_dir/some_file_{1..3}', 'TSV', 'name String, value UInt32')
```
1. 查询这两个目录的所有文件中的行数:
3. 查询这两个目录的所有文件中的行数:
<!-- -->
@ -81,11 +79,11 @@ FROM hdfs('hdfs://hdfs1:9000/{some,another}_dir/*', 'TSV', 'name String, value U
```
!!! warning "警告"
如果您的文件列表包含带前导零的数字范围,请单独使用带大括号的构造或使用 `?`.
如果您的文件列表包含带前导零的数字范围,请对每个数字分别使用带有大括号的结构或使用 `?`
**示例**
从名为 `file000`, `file001`, … , `file999`:
从名为 `file000`, `file001`, … , `file999`的文件中查询数据:
``` sql
SELECT count(*)
@ -94,8 +92,8 @@ FROM hdfs('hdfs://hdfs1:9000/big_dir/file{0..9}{0..9}{0..9}', 'CSV', 'name Strin
## 虚拟列 {#virtual-columns}
- `_path`Path to the file.
- `_file`Name of the file.
- `_path`文件路径。
- `_file`文件名称。
**另请参阅**

View File

@ -1,38 +1,35 @@
---
machine_translated: true
machine_translated_rev: 72537a2d527c63c07aa5d2361a8829f3895cf2bd
toc_folder_title: "\u8868\u51FD\u6570"
toc_priority: 34
toc_title: "\u5BFC\u8A00"
---
# 表函数 {#table-functions}
表函数是构造表的方法。
表函数是用来构造表的方法。
您可以使用表函数:
您可以在以下位置使用表函数:
- [FROM](../statements/select/from.md) 《公约》条款 `SELECT` 查询
- `SELECT` 查询的[FROM](../../sql-reference/statements/select/from.md)子句
The method for creating a temporary table that is available only in the current query. The table is deleted when the query finishes.
创建临时表的方法,该临时表仅在当前查询中可用。当查询完成后,该临时表将被删除。
- [创建表为\<table_function()\>](../statements/create.md#create-table-query) 查询。
- [CREATE TABLE AS \<table_function()\>](../statements/create.md#create-table-query) 查询。
It's one of the methods of creating a table.
这是创建表的方法之一。
!!! warning "警告"
你不能使用表函数,如果 [allow_ddl](../../operations/settings/permissions-for-queries.md#settings_allow_ddl) 设置被禁用。
如果 [allow_ddl](../../operations/settings/permissions-for-queries.md#settings_allow_ddl) 设置被禁用,则不能使用表函数
| 功能 | 产品描述 |
|--------------------|--------------------------------------------------------------------------------------------------------|
| [文件](file.md) | 创建一个 [文件](../../engines/table-engines/special/file.md)-发动机表。 |
| [合并](merge.md) | 创建一个 [合并](../../engines/table-engines/special/merge.md)-发动机表。 |
| [数字](numbers.md) | 创建一个包含整数填充的单列的表。 |
| [远程](remote.md) | 允许您访问远程服务器,而无需创建 [分布](../../engines/table-engines/special/distributed.md)-发动机表。 |
| [url](url.md) | 创建一个 [Url](../../engines/table-engines/special/url.md)-发动机表。 |
| [mysql](mysql.md) | 创建一个 [MySQL](../../engines/table-engines/integrations/mysql.md)-发动机表。 |
| [jdbc](jdbc.md) | 创建一个 [JDBC](../../engines/table-engines/integrations/jdbc.md)-发动机表。 |
| [odbc](odbc.md) | 创建一个 [ODBC](../../engines/table-engines/integrations/odbc.md)-发动机表。 |
| [hdfs](hdfs.md) | 创建一个 [HDFS](../../engines/table-engines/integrations/hdfs.md)-发动机表。 |
| 函数 | 描述 |
|-----------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|
| [file](../../sql-reference/table-functions/file.md) | 创建一个file引擎表。 |
| [merge](../../sql-reference/table-functions/merge.md) | 创建一个merge引擎表。 |
| [numbers](../../sql-reference/table-functions/numbers.md) | 创建一个单列的表,其中包含整数。 |
| [remote](../../sql-reference/table-functions/remote.md) | 允许您访问远程服务器,而无需创建分布式表。 |
| [url](../../sql-reference/table-functions/url.md) | 创建一个URL引擎表。 |
| [mysql](../../sql-reference/table-functions/mysql.md) | 创建一个MySQL引擎表。 |
| [jdbc](../../sql-reference/table-functions/jdbc.md) | 创建一个JDBC引擎表。 |
| [odbc](../../sql-reference/table-functions/odbc.md) | 创建一个ODBC引擎表。 |
| [hdfs](../../sql-reference/table-functions/hdfs.md) | 创建一个HDFS引擎表。 |
[原始文章](https://clickhouse.tech/docs/en/query_language/table_functions/) <!--hide-->

View File

@ -1,33 +1,29 @@
---
machine_translated: true
machine_translated_rev: 72537a2d527c63c07aa5d2361a8829f3895cf2bd
toc_priority: 46
toc_title: "\u8F93\u5165"
toc_title: input
---
# 输入 {#input}
# input {#input}
`input(structure)` -表功能,允许有效地转换和插入数据发送到
服务器与给定结构的表与另一种结构。
`input(structure)` -表函数,可以有效地将发送给服务器的数据转换为具有给定结构的数据并将其插入到具有其他结构的表中。
`structure` -以下格式发送到服务器的数据结构 `'column1_name column1_type, column2_name column2_type, ...'`.
例如, `'id UInt32, name String'`.
`structure` -发送到服务器的数据结构的格式 `'column1_name column1_type, column2_name column2_type, ...'`
例如, `'id UInt32, name String'`
此功能只能用于 `INSERT SELECT` 查询,只有一次,但其他行为像普通表函数
该函数只能在 `INSERT SELECT` 查询中使用,并且只能使用一次,但在其他方面,行为类似于普通的表函数
(例如,它可以用于子查询等。).
数据可以以任何方式像普通发送 `INSERT` 查询并传递任何可用 [格式](../../interfaces/formats.md#formats)
必须在查询结束时指定(不像普通 `INSERT SELECT`).
数据可以像普通 `INSERT` 查询一样发送,并以必须在查询末尾指定的任何可用[格式](../../interfaces/formats.md#formats)
传递(与普通 `INSERT SELECT`不同)。
这个功能的主要特点是,当服务器从客户端接收数据时,它同时将其转换
根据表达式中的列表 `SELECT` 子句并插入到目标表中。 临时表
不创建所有传输的数据。
该函数的主要特点是,当服务器从客户端接收数据时,它会同时根据 `SELECT` 子句中的表达式列表将其转换,并插入到目标表中。
不会创建包含所有已传输数据的临时表。
**例**
- 让 `test` 表具有以下结构 `(a String, b String)`
和数据 `data.csv` 具有不同的结构 `(col1 String, col2 Date, col3 Int32)`. 查询插入
从数据 `data.csv``test` 同时转换的表如下所示:
并且 `data.csv` 中的数据具有不同的结构 `(col1 String, col2 Date, col3 Int32)`
将数据从 `data.csv` 插入到 `test` 表中,同时进行转换的查询如下所示:
<!-- -->
@ -35,7 +31,7 @@ toc_title: "\u8F93\u5165"
$ cat data.csv | clickhouse-client --query="INSERT INTO test SELECT lower(col1), col3 * col3 FROM input('col1 String, col2 Date, col3 Int32') FORMAT CSV";
```
- 如果 `data.csv` 包含相同结构的数据 `test_structure` 作为表 `test` 那么这两个查询是相等的:
- 如果 `data.csv` 包含与表 `test` 相同结构 `test_structure` 的数据,那么这两个查询是相等的:
<!-- -->

View File

@ -1,6 +1,4 @@
---
machine_translated: true
machine_translated_rev: 72537a2d527c63c07aa5d2361a8829f3895cf2bd
toc_priority: 43
toc_title: jdbc
---
@ -9,10 +7,10 @@ toc_title: jdbc
`jdbc(jdbc_connection_uri, schema, table)` -返回通过JDBC驱动程序连接的表。
此表函数需要单独的 `clickhouse-jdbc-bridge` 程序正在运行。
此表函数需要单独的 `clickhouse-jdbc-bridge` 程序才能运行。
它支持可空类型基于查询的远程表的DDL
**例**
**例**
``` sql
SELECT * FROM jdbc('jdbc:mysql://localhost:3306/?user=root&password=root', 'schema', 'table')

View File

@ -1,14 +1,12 @@
---
machine_translated: true
machine_translated_rev: 72537a2d527c63c07aa5d2361a8829f3895cf2bd
toc_priority: 38
toc_title: "\u5408\u5E76"
toc_title: merge
---
# 合并 {#merge}
# merge {#merge}
`merge(db_name, 'tables_regexp')` Creates a temporary Merge table. For more information, see the section “Table engines, Merge”.
`merge(db_name, 'tables_regexp')` 创建一个临时Merge表。 有关更多信息,请参见 “Table engines, Merge”。
表结构取自与正则表达式匹配的第一个表。
表结构取自遇到的第一个与正则表达式匹配的表。
[原始文章](https://clickhouse.tech/docs/en/query_language/table_functions/merge/) <!--hide-->

View File

@ -1,18 +1,16 @@
---
machine_translated: true
machine_translated_rev: 72537a2d527c63c07aa5d2361a8829f3895cf2bd
toc_priority: 39
toc_title: "\u6570\u5B57"
toc_title: numbers
---
# 数字 {#numbers}
# numbers {#numbers}
`numbers(N)` Returns a table with the single number 包含从0到N-1的整数的列(UInt64)
`numbers(N, M)` -返回一个表与单 number 包含从N到(N+M-1)的整数的列(UInt64)
`numbers(N)` 返回一个包含单个 number 列(UInt64)的表其中包含从0到N-1的整数
`numbers(N, M)` - 返回一个包含单个 number 列(UInt64)的表其中包含从N到(N+M-1)的整数
类似于 `system.numbers` 表,它可以用于测试和生成连续的值, `numbers(N, M)``system.numbers`.
类似于 `system.numbers` 表,它可以用于测试和生成连续的值, `numbers(N, M)``system.numbers`更有效。
以下查询是等的:
以下查询是等的:
``` sql
SELECT * FROM numbers(10);
@ -20,10 +18,10 @@ SELECT * FROM numbers(0, 10);
SELECT * FROM system.numbers LIMIT 10;
```
例:
例:
``` sql
-- Generate a sequence of dates from 2010-01-01 to 2010-12-31
-- 生成2010-01-01至2010-12-31的日期序列
select toDate('2010-01-01') + number as d FROM numbers(365);
```

View File

@ -1,13 +1,11 @@
---
machine_translated: true
machine_translated_rev: 72537a2d527c63c07aa5d2361a8829f3895cf2bd
toc_priority: 44
toc_title: odbc
---
# odbc {#table-functions-odbc}
返回通过连接的表 [ODBC](https://en.wikipedia.org/wiki/Open_Database_Connectivity).
返回通过 [ODBC](https://en.wikipedia.org/wiki/Open_Database_Connectivity) 连接的表。
``` sql
odbc(connection_settings, external_database, external_table)
@ -15,23 +13,23 @@ odbc(connection_settings, external_database, external_table)
参数:
- `connection_settings`Name of the section with connection settings in the `odbc.ini` 文件
- `external_database`Name of a database in an external DBMS.
- `external_table`Name of a table in the `external_database`.
- `connection_settings``odbc.ini` 文件中连接设置的部分的名称。
- `external_database`外部DBMS的数据库名。
- `external_table` `external_database` 数据库中的表名。
为了安全地实现ODBC连接ClickHouse使用单独的程序 `clickhouse-odbc-bridge`. 如果直接从ODBC驱动程序加载 `clickhouse-server`驱动程序问题可能会导致ClickHouse服务器崩溃。 ClickHouse自动启动 `clickhouse-odbc-bridge` 当它是必需的。 ODBC桥程序是从相同的软件包作为安装 `clickhouse-server`.
为了安全地实现ODBC连接ClickHouse使用单独的程序 `clickhouse-odbc-bridge`。 如果ODBC驱动程序直接从 `clickhouse-server` 加载,则驱动程序问题可能会导致ClickHouse服务器崩溃。 当需要时,ClickHouse自动启动 `clickhouse-odbc-bridge`。 ODBC桥程序是从与 `clickhouse-server` 相同的软件包安装的。
与字段 `NULL` 外部表中的值将转换为基数据类型的默认值。 例如如果远程MySQL表字段具有 `INT NULL` 键入它将转换为0ClickHouse的默认值 `Int32` 数据类型)。
外部表中字段包含的 `NULL` 值将转换为基本据类型的默认值。 例如如果远程MySQL表字段包含 `INT NULL` 类型则将被转换为0ClickHouse`Int32` 数据类型的默认值)。
## 用法示例 {#usage-example}
**通过ODBC从本地MySQL安装获取数据**
**通过ODBC从本地安装的MySQL获取数据**
此示例检查Ubuntu Linux18.04和MySQL服务器5.7。
这个例子检查Ubuntu Linux18.04和MySQL服务器5.7。
确保安装了unixODBC和MySQL连接器。
确保已经安装了unixODBC和MySQL连接器。
默认情况下如果从软件包安装ClickHouse以用户身份启动 `clickhouse`. 因此您需要在MySQL服务器中创建和配置此用户。
默认情况下如果从软件包安装ClickHouse以用户 `clickhouse` 启动。 因此您需要在MySQL服务器中创建和配置此用户。
``` bash
$ sudo mysql
@ -42,7 +40,7 @@ mysql> CREATE USER 'clickhouse'@'localhost' IDENTIFIED BY 'clickhouse';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'clickhouse'@'clickhouse' WITH GRANT OPTION;
```
然后配置连接 `/etc/odbc.ini`.
然后`/etc/odbc.ini` 中配置连接。
``` bash
$ cat /etc/odbc.ini
@ -55,7 +53,7 @@ USERNAME = clickhouse
PASSWORD = clickhouse
```
您可以使用 `isql` unixodbc安装中的实用程序。
您可以使用unixODBC安装的 `isql` 实用程序检查连接
``` bash
$ isql -v mysqlconn

View File

@ -1,22 +1,52 @@
# 远程,远程安全 {#remote-remotesecure}
# remote, remoteSecure {#remote-remotesecure}
允许您访问远程服务器,而无需创建 `Distributed`
允许您访问远程服务器,而无需创建 `Distributed`。`remoteSecure` - 与 `remote` 相同,但是会使用加密链接。
签名:
这两个函数都可以在 `SELECT``INSERT` 查询中使用。
语法:
``` sql
remote('addresses_expr', db, table[, 'user'[, 'password']])
remote('addresses_expr', db.table[, 'user'[, 'password']])
remoteSecure('addresses_expr', db, table[, 'user'[, 'password']])
remoteSecure('addresses_expr', db.table[, 'user'[, 'password']])
remote('addresses_expr', db, table[, 'user'[, 'password'], sharding_key])
remote('addresses_expr', db.table[, 'user'[, 'password'], sharding_key])
remoteSecure('addresses_expr', db, table[, 'user'[, 'password'], sharding_key])
remoteSecure('addresses_expr', db.table[, 'user'[, 'password'], sharding_key])
```
`addresses_expr` 代表远程服务器地址的一个表达式。可以只是单个服务器地址。 服务器地址可以是 `host:port``host`。`host` 可以指定为服务器域名或是IPV4或IPV6地址。IPv6地址在方括号中指定。`port` 是远程服务器上的TCP端口。 如果省略端口,则使用服务器配置文件中的 `tcp_port` 默认情况为9000
**参数**
- `addresses_expr` 代表远程服务器地址的一个表达式。可以只是单个服务器地址。 服务器地址可以是 `host:port``host`
`host` 可以指定为服务器名称或是IPV4或IPV6地址。IPv6地址在方括号中指定。
`port` 是远程服务器上的TCP端口。 如果省略端口,则 `remote` 使用服务器配置文件中的 [tcp_port](../../operations/server-configuration-parameters/settings.md#server_configuration_parameters-tcp_port) 默认情况为9000`remoteSecure` 使用 [tcp_port_secure](../../operations/server-configuration-parameters/settings.md#server_configuration_parameters-tcp_port_secure) 默认情况为9440
!!! important "重要事项"
IPv6地址需要指定端口。
类型: [String](../../sql-reference/data-types/string.md)。
- `db` — 数据库名。类型: [String](../../sql-reference/data-types/string.md)。
- `table` — 表名。类型: [String](../../sql-reference/data-types/string.md)。
- `user` — 用户名。如果未指定用户,则使用 `default` 。类型: [String](../../sql-reference/data-types/string.md)。
- `password` — 用户密码。如果未指定密码,则使用空密码。类型: [String](../../sql-reference/data-types/string.md)。
- `sharding_key` — 分片键以支持在节点之间分布数据。 例如: `insert into remote('127.0.0.1:9000,127.0.0.2', db, table, 'default', rand())`。 类型: [UInt32](../../sql-reference/data-types/int-uint.md)。
**返回值**
来自远程服务器的数据集。
**用法**
使用 `remote` 表函数没有创建一个 `Distributed` 表更优,因为在这种情况下,将为每个请求重新建立服务器连接。此外,如果设置了主机名,则会解析这些名称,并且在使用各种副本时不会计入错误。 在处理大量查询时,始终优先创建 `Distributed` 表,不要使用 `remote` 表函数。
例:
`remote` 表函数可以在以下情况下是有用的:
- 访问特定服务器进行数据比较、调试和测试。
- 在多个ClickHouse集群之间的用户研究目的的查询。
- 手动发出的不频繁分布式请求。
- 每次重新定义服务器集的分布式请求。
**地址**
``` text
example01-01-1
@ -29,8 +59,6 @@ localhost
多个地址可以用逗号分隔。在这种情况下ClickHouse将使用分布式处理因此它将将查询发送到所有指定的地址如具有不同数据的分片
示例:
``` text
example01-01-1,example01-02-1
```
@ -49,30 +77,28 @@ example01-{01..02}-1
如果您有多对大括号,它会生成相应集合的直接乘积。
大括号中的地址和部分地址可以用管道符号(\|)分隔。 在这种情况下,相应的地址集被解释为副本,并且查询将被发送到第一个正常副本。 但是,副本将按照当前[load_balancing](../../operations/settings/settings.md)设置的顺序进行迭代。
示例:
大括号中的地址和部分地址可以用管道符号(\|)分隔。 在这种情况下,相应的地址集被解释为副本,并且查询将被发送到第一个正常副本。 但是,副本将按照当前[load_balancing](../../operations/settings/settings.md)设置的顺序进行迭代。此示例指定两个分片,每个分片都有两个副本:
``` text
example01-{01..02}-{1|2}
```
此示例指定两个分片,每个分片都有两个副本。
生成的地址数由常量限制。目前这是1000个地址。
使用 `remote` 表函数没有创建一个 `Distributed` 表更优,因为在这种情况下,将为每个请求重新建立服务器连接。此外,如果设置了主机名,则会解析这些名称,并且在使用各种副本时不会计算错误。 在处理大量查询时,始终优先创建 `Distributed` 表,不要使用 `remote` 表功能。
**示例**
`remote` 表函数可以在以下情况下是有用的:
从远程服务器选择数据:
- 访问特定服务器进行数据比较、调试和测试。
- 在多个ClickHouse集群之间的用户研究目的的查询。
- 手动发出的不频繁分布式请求。
- 每次重新定义服务器集的分布式请求。
``` sql
SELECT * FROM remote('127.0.0.1', db.remote_engine_table) LIMIT 3;
```
如果未指定用户, 将会使用`default`。
如果未指定密码,则使用空密码。
将远程服务器中的数据插入表中:
`remoteSecure` - 与 `remote` 相同,但是会使用加密链接。默认端口为配置文件中的[tcp_port_secure](../../operations/server-configuration-parameters/settings.md#server_configuration_parameters-tcp_port_secure)或9440。
``` sql
CREATE TABLE remote_table (name String, value UInt32) ENGINE=Memory;
INSERT INTO FUNCTION remote('127.0.0.1', currentDatabase(), 'remote_table') VALUES ('test', 42);
SELECT * FROM remote_table;
```
[原始文章](https://clickhouse.tech/docs/en/query_language/table_functions/remote/) <!--hide-->

View File

@ -1,26 +1,43 @@
---
machine_translated: true
machine_translated_rev: 72537a2d527c63c07aa5d2361a8829f3895cf2bd
toc_priority: 41
toc_title: url
---
# url {#url}
`url(URL, format, structure)` -返回从创建的表 `URL` 与给定
`format``structure`.
`url` 函数从 `URL` 创建一个具有给定 `format``structure` 的表。
URL-HTTP或HTTPS服务器地址它可以接受 `GET` 和/或 `POST` 请求
`url` 函数可用于对[URL](../../engines/table-engines/special/url.md)表中的数据进行 `SELECT``INSERT` 的查询中
格式 - [格式](../../interfaces/formats.md#formats) 的数据。
**语法**
结构-表结构 `'UserID UInt64, Name String'` 格式。 确定列名称和类型。
``` sql
url(URL, format, structure)
```
**参数**
- `URL` — HTTP或HTTPS服务器地址它可以接受 `GET``POST` 请求 (对应于 `SELECT``INSERT` 查询)。类型: [String](../../sql-reference/data-types/string.md)。
- `format` — 数据[格式](../../interfaces/formats.md#formats)。类型: [String](../../sql-reference/data-types/string.md)。
- `structure` — 以 `'UserID UInt64, Name String'` 格式的表结构。确定列名和类型。 类型: [String](../../sql-reference/data-types/string.md)。
**返回值**
A table with the specified format and structure and with data from the defined `URL`.
**示例**
获取一个表的前3行该表是从HTTP服务器获取的包含 `String` 和 [UInt32](../../sql-reference/data-types/int-uint.md) 类型的列,以[CSV](../../interfaces/formats.md#csv)格式返回。
``` sql
-- getting the first 3 lines of a table that contains columns of String and UInt32 type from HTTP-server which answers in CSV format.
SELECT * FROM url('http://127.0.0.1:12345/', CSV, 'column1 String, column2 UInt32') LIMIT 3
SELECT * FROM url('http://127.0.0.1:12345/', CSV, 'column1 String, column2 UInt32') LIMIT 3;
```
`URL` 的数据插入到表中:
``` sql
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;
```
[原始文章](https://clickhouse.tech/docs/en/query_language/table_functions/url/) <!--hide-->