From dc96085407f4ff782f34ad343faaf8051e4424d2 Mon Sep 17 00:00:00 2001 From: jianmei zhang Date: Tue, 16 Mar 2021 15:29:34 +0800 Subject: [PATCH] update translations for some table functions --- docs/zh/sql-reference/table-functions/file.md | 79 +++++++++++-------- .../sql-reference/table-functions/generate.md | 20 +++-- .../zh/sql-reference/table-functions/input.md | 30 +++---- .../sql-reference/table-functions/remote.md | 78 ++++++++++++------ 4 files changed, 119 insertions(+), 88 deletions(-) diff --git a/docs/zh/sql-reference/table-functions/file.md b/docs/zh/sql-reference/table-functions/file.md index 4d694cb6729..5a86a2d6c21 100644 --- a/docs/zh/sql-reference/table-functions/file.md +++ b/docs/zh/sql-reference/table-functions/file.md @@ -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` — 文件名称。 **另请参阅** diff --git a/docs/zh/sql-reference/table-functions/generate.md b/docs/zh/sql-reference/table-functions/generate.md index 1b535161acb..b9b02793cf3 100644 --- a/docs/zh/sql-reference/table-functions/generate.md +++ b/docs/zh/sql-reference/table-functions/generate.md @@ -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} diff --git a/docs/zh/sql-reference/table-functions/input.md b/docs/zh/sql-reference/table-functions/input.md index 42b354dc935..a0215b26c8a 100644 --- a/docs/zh/sql-reference/table-functions/input.md +++ b/docs/zh/sql-reference/table-functions/input.md @@ -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` 的数据,那么这两个查询是相等的: diff --git a/docs/zh/sql-reference/table-functions/remote.md b/docs/zh/sql-reference/table-functions/remote.md index b7bd494609b..cacc68c0b71 100644 --- a/docs/zh/sql-reference/table-functions/remote.md +++ b/docs/zh/sql-reference/table-functions/remote.md @@ -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/)