Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .translation-init
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Translation initialization: 2025-08-07T09:16:55.714367
Translation initialization: 2025-08-07T10:37:34.904930
66 changes: 30 additions & 36 deletions docs/cn/guides/40-load-data/04-transform/00-querying-parquet.md
Original file line number Diff line number Diff line change
@@ -1,59 +1,39 @@
---
title: 查询 Stage 中的 Parquet 文件
title: 查询暂存区中的 Parquet 文件
sidebar_label: Parquet
---

## 查询 Stage 中的 Parquet 文件

语法:
```sql
SELECT [<alias>.]<column> [, <column> ...]
FROM {@<stage_name>[/<path>] [<table_alias>] | '<uri>' [<table_alias>]}
[(
[<connection_parameters>],
[ PATTERN => '<regex_pattern>'],
[ FILE_FORMAT => 'PARQUET | <custom_format_name>'],
[ FILES => ( '<file_name>' [ , '<file_name>' ] [ , ... ] ) ],
[ CASE_SENSITIVE => true | false ]
)]
```
## 语法:

:::info 提示
**查询返回内容说明:**

* **返回格式**: 列值以其原生数据类型返回 (非 variant 类型)
* **访问方式**: 直接使用列名 `column_name`
* **示例**: `SELECT id, name, age FROM @stage_name`
* **关键特性**:
* 无需使用路径表达式 (如 `$1:name`)
* 无需类型转换
* Parquet 文件包含内嵌的 schema 信息
:::
- [将行作为 Variant 查询](./index.md#query-rows-as-variants)
- [按名称查询列](./index.md#query-columns-by-name)
- [查询元数据](./index.md#query-metadata)

## 教程

### 步骤 1. 创建外部 Stage
### 步骤 1:创建外部暂存区(Stage

使用您自己的 S3 存储桶和凭证创建一个外部 stage,用于存储 Parquet 文件。
使用您自己的 S3 存储桶和凭据创建一个外部暂存区(Stage),用于存放 Parquet 文件。
```sql
CREATE STAGE parquet_query_stage
URL = 's3://load/parquet/'
CONNECTION = (
ACCESS_KEY_ID = '<your-access-key-id>'
SECRET_ = '< = '<your-secret-access-key>'
SECRET_ACCESS_KEY = '<your-secret-access-key>'
);
```

### 步骤 2. 创建自定义 Parquet 文件格式
### 步骤 2创建自定义 Parquet 文件格式

```sql
CREATE FILE FORMAT parquet_query_format
TYPE = PARQUET
;
CREATE FILE FORMAT parquet_query_format TYPE = PARQUET;
```
- 更多 Parquet 文件格式选项请参考 [Parquet 文件格式选项](/sql/sql-reference/file-format-options#parquet-options)
- 更多 Parquet 文件格式选项,请参阅 [Parquet 文件格式选项](/sql/sql-reference/file-format-options#parquet-options)

### 步骤 3:查询 Parquet 文件

### 步骤 3. 查询 Parquet 文件
按列名查询:

```sql
SELECT *
Expand All @@ -63,9 +43,23 @@ FROM @parquet_query_stage
PATTERN => '.*[.]parquet'
);
```
### 包含元数据的查询

直接从 stage 查询 Parquet 文件,包括 `METADATA$FILENAME` 和 `METADATA$FILE_ROW_NUMBER` 等元数据列:
按路径表达式查询:


```sql
SELECT $1
FROM @parquet_query_stage
(
FILE_FORMAT => 'parquet_query_format',
PATTERN => '.*[.]parquet'
);
```


### 查询元数据(Metadata)

直接从暂存区(Stage)查询 Parquet 文件,并包含 `METADATA$FILENAME` 和 `METADATA$FILE_ROW_NUMBER` 等元数据(Metadata)列:

```sql
SELECT
Expand Down
49 changes: 13 additions & 36 deletions docs/cn/guides/40-load-data/04-transform/01-querying-csv.md
Original file line number Diff line number Diff line change
@@ -1,41 +1,18 @@
---
title: 查询 Stage 中的 CSV 文件
title: 查询暂存区中的 CSV 文件
sidebar_label: CSV
---

## 查询 Stage 中的 CSV 文件
## 语法:

语法:
```sql
SELECT [<alias>.]$<col_position> [, $<col_position> ...]
FROM {@<stage_name>[/<path>] [<table_alias>] | '<uri>' [<table_alias>]}
[(
[<connection_parameters>],
[ PATTERN => '<regex_pattern>'],
[ FILE_FORMAT => 'CSV| <custom_format_name>'],
[ FILES => ( '<file_name>' [ , '<file_name>' ] [ , ... ] ) ]
)]
```


:::info 提示
**查询返回内容说明:**

* **返回格式**:默认以字符串形式返回各列值
* **访问方式**:使用位置引用 `$<col_position>`(例如 `$1`、`$2`、`$3`)
* **示例**:`SELECT $1, $2, $3 FROM @stage_name`
* **关键特性**:
* 通过位置而非列名访问数据
* 每个 `$<col_position>` 引用单列而非整行
* 非字符串操作需类型转换(如 `CAST($1 AS INT)`)
* CSV 文件不包含内嵌模式信息
:::
- [按位置查询列](./index.md#query-columns-by-position)
- [查询元数据](./index.md#query-metadata)

## 教程

### 步骤 1. 创建外部 Stage
### 步骤 1:创建外部暂存区

使用您自己的 S3 存储桶和凭证创建外部 Stage,用于存储 CSV 文件
创建一个外部暂存区(Stage),并配置你的 S3 存储桶和凭证,CSV 文件存储在该位置
```sql
CREATE STAGE csv_query_stage
URL = 's3://load/csv/'
Expand All @@ -45,20 +22,20 @@ CONNECTION = (
);
```

### 步骤 2. 创建自定义 CSV 文件格式
### 步骤 2创建自定义 CSV 文件格式

```sql
CREATE FILE FORMAT csv_query_format
TYPE = CSV,
RECORD_DELIMITER = '\n',
FIELD_DELIMITER = ',',
COMPRESSION = AUTO,
SKIP_HEADER = 1; -- 如果 CSV 文件包含表头,查询时跳过首行
SKIP_HEADER = 1; -- 如果 CSV 文件包含表头,查询时跳过第一行
```

- 更多 CSV 文件格式选项请参考 [CSV 文件格式选项](/sql/sql-reference/file-format-options#csv-options)
- 更多 CSV 文件格式选项,请参考 [CSV 文件格式选项](/sql/sql-reference/file-format-options#csv-options)

### 步骤 3. 查询 CSV 文件
### 步骤 3查询 CSV 文件

```sql
SELECT $1, $2, $3
Expand All @@ -69,7 +46,7 @@ FROM @csv_query_stage
);
```

如果 CSV 文件使用 gzip 压缩,可使用以下查询
如果 CSV 文件使用 gzip 压缩,我们可以使用以下查询

```sql
SELECT $1, $2, $3
Expand All @@ -79,9 +56,9 @@ FROM @csv_query_stage
PATTERN => '.*[.]csv[.]gz'
);
```
### 包含元数据的查询
### 查询元数据

直接从 Stage 查询 CSV 文件,包含 `METADATA$FILENAME` 和 `METADATA$FILE_ROW_NUMBER` 等元数据列:
直接从暂存区(Stage查询 CSV 文件,包括 `METADATA$FILENAME` 和 `METADATA$FILE_ROW_NUMBER` 等元数据列:

```sql
SELECT
Expand Down
45 changes: 11 additions & 34 deletions docs/cn/guides/40-load-data/04-transform/02-querying-tsv.md
Original file line number Diff line number Diff line change
@@ -1,41 +1,19 @@
---
title: 查询 Stage 中的 TSV 文件
title: 查询暂存区中的 TSV 文件
sidebar_label: TSV
---

## 查询 Stage 中的 TSV 文件

语法:
```sql
SELECT [<alias>.]$<col_position> [, $<col_position> ...]
FROM {@<stage_name>[/<path>] [<table_alias>] | '<uri>' [<table_alias>]}
[(
[<connection_parameters>],
[ PATTERN => '<regex_pattern>'],
[ FILE_FORMAT => 'TSV| <custom_format_name>'],
[ FILES => ( '<file_name>' [ , '<file_name>' ] [ , ... ] ) ]
)]
```
## 语法:

- [按位置查询列](./index.md#query-columns-by-position)
- [查询元数据](./index.md#query-metadata)

:::info 提示
**查询返回内容说明:**

* **返回格式**:默认以字符串形式返回各列值
* **访问方式**:使用位置引用 `$<col_position>` (例如 `$1`, `$2`, `$3`)
* **示例**:`SELECT $1, $2, $3 FROM @stage_name`
* **关键特性**:
* 通过位置而非列名访问数据
* 每个 `$<col_position>` 对应单个列而非整行
* 非字符串操作需类型转换 (例如 `CAST($1 AS INT)`)
* TSV 文件中不包含内嵌的 schema 信息
:::

## 教程

### 第一步:创建外部 Stage
### 步骤 1:创建外部暂存区

使用您的 S3 存储桶和凭证创建外部 stage,用于存储 TSV 文件。
使用您自己的 S3 存储桶和凭据创建一个外部暂存区(Stage),其中存放了您的 TSV 文件。
```sql
CREATE STAGE tsv_query_stage
URL = 's3://load/tsv/'
Expand All @@ -45,7 +23,7 @@ CONNECTION = (
);
```

### 第二步:创建自定义 TSV 文件格式
### 步骤 2:创建自定义 TSV 文件格式

```sql
CREATE FILE FORMAT tsv_query_format
Expand All @@ -55,9 +33,9 @@ CREATE FILE FORMAT tsv_query_format
COMPRESSION = AUTO;
```

- 更多 TSV 文件格式选项请参考 [TSV 文件格式选项](/sql/sql-reference/file-format-options#tsv-options)
- 更多 TSV 文件格式选项,请参阅 [TSV 文件格式选项](/sql/sql-reference/file-format-options#tsv-options)

### 第三步:查询 TSV 文件
### 步骤 3:查询 TSV 文件

```sql
SELECT $1, $2, $3
Expand All @@ -78,10 +56,9 @@ FROM @tsv_query_stage
PATTERN => '.*[.]tsv[.]gz'
);
```
### 查询元数据

### 查询包含元数据

直接从 stage 查询 TSV 文件,包括 `METADATA$FILENAME` 和 `METADATA$FILE_ROW_NUMBER` 等元数据列:
直接从暂存区(Stage)查询 TSV 文件,并包含 `METADATA$FILENAME` 和 `METADATA$FILE_ROW_NUMBER` 等元数据列:

```sql
SELECT
Expand Down
72 changes: 12 additions & 60 deletions docs/cn/guides/40-load-data/04-transform/03-querying-ndjson.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
title: 查询暂存区中的 NDJSON 文件
title: 查询暂存区(Stage)中的 NDJSON 文件
sidebar_label: NDJSON
---

在 Databend 中,你可以直接查询存储在暂存区(Stage)中的 NDJSON 文件,而无需先将数据加载到表中。这种方法对于数据探索、ETL 处理和即席分析等场景特别有用
在 Databend 中,你可以直接查询存储在暂存区(Stage)中的 NDJSON 文件,而无需先将数据加载到表中。这种方法对于数据探索、ETL 处理和即席分析场景特别有用

## 什么是 NDJSON?

Expand All @@ -21,39 +21,16 @@ NDJSON(Newline Delimited JSON,换行符分隔的 JSON)是一种基于 JSON
- **兼容大数据**:广泛用于日志文件、数据导出和 ETL Pipeline。
- **易于处理**:每一行都是一个独立的 JSON 对象,支持并行处理。

## 查询暂存区中的 NDJSON 文件
## 语法

语法:
```sql
SELECT [<alias>.]$1:<column> [, $1:<column> ...]
FROM {@<stage_name>[/<path>] [<table_alias>] | '<uri>' [<table_alias>]}
[(
[<connection_parameters>],
[ PATTERN => '<regex_pattern>'],
[ FILE_FORMAT => 'NDJSON| <custom_format_name>'],
[ FILES => ( '<file_name>' [ , '<file_name>' ] [ , ... ] ) ]
)]
```


:::info 提示
**查询返回内容说明:**

* **返回格式**:每一行作为一个单独的 VARIANT 对象(通过 `$1` 引用)。
* **访问方法**:使用路径表达式 `$1:column_name`。
* **示例**:`SELECT $1:title, $1:author FROM @stage_name`。
* **主要特性**:
* 必须使用路径表示法来访问特定字段。
* 对于特定类型的操作,需要进行类型转换(例如,`CAST($1:id AS INT)`)。
* 每一行 NDJSON 都被解析为一个完整的 JSON 对象。
* 整行数据表示为一个单独的 VARIANT 对象。
:::
- [将行作为 Variant 查询](./index.md#query-rows-as-variants)
- [查询元数据](./index.md#query-metadata)

## 教程

### 步骤 1. 创建外部暂存区
### 步骤 1. 创建外部暂存区(Stage)

使用你自己的 S3 存储桶和凭证创建一个外部暂存区,你的 NDJSON 文件存储在该位置。
使用你自己的 S3 存储桶和凭据创建一个外部暂存区(Stage),你的 NDJSON 文件存储在该位置。
```sql
CREATE STAGE ndjson_query_stage
URL = 's3://load/ndjson/'
Expand All @@ -75,7 +52,7 @@ CREATE FILE FORMAT ndjson_query_format

### 步骤 3. 查询 NDJSON 文件

现在你可以直接从暂存区查询 NDJSON 文件。此示例从每个 JSON 对象中提取 `title` 和 `author` 字段:
现在,你可以直接从暂存区(Stage)查询 NDJSON 文件。此示例从每个 JSON 对象中提取 `title` 和 `author` 字段:

```sql
SELECT $1:title, $1:author
Expand All @@ -87,10 +64,10 @@ FROM @ndjson_query_stage
```

**说明:**
- `$1:title` 和 `$1:author`:从 JSON 对象中提取特定字段。`$1` 代表整个 JSON 对象(作为一个 VARIANT),`:字段名` 用于访问单个字段。
- `@ndjson_query_stage`:引用在步骤 1 中创建的外部暂存区。
- `$1:title` 和 `$1:author`:从 JSON 对象中提取特定字段。`$1` 代表整个 JSON 对象(作为 Variant 类型),`:field_name` 用于访问单个字段。
- `@ndjson_query_stage`:引用在步骤 1 中创建的外部暂存区(Stage)
- `FILE_FORMAT => 'ndjson_query_format'`:使用在步骤 2 中定义的自定义文件格式。
- `PATTERN => '.*[.]ndjson'`:匹配所有以 `.ndjson` 结尾的文件的正则表达式模式
- `PATTERN => '.*[.]ndjson'`:匹配所有以 `.ndjson` 结尾的文件的正则表达式(Regex)模式

### 查询压缩文件

Expand All @@ -106,34 +83,9 @@ FROM @ndjson_query_stage
```

**主要区别:** 模式 `.*[.]ndjson[.]gz` 匹配以 `.ndjson.gz` 结尾的文件。由于文件格式中设置了 `COMPRESSION = AUTO`,Databend 会在查询执行期间自动解压 gzip 文件。
### 带元数据查询

你还可以在查询中包含文件元数据,这对于跟踪数据血缘和调试非常有用:

```sql
SELECT
METADATA$FILENAME,
METADATA$FILE_ROW_NUMBER,
$1:title, $1:author
FROM @ndjson_query_stage
(
FILE_FORMAT => 'ndjson_query_format',
PATTERN => '.*[.]ndjson'
);
```

**元数据列说明:**
- `METADATA$FILENAME`:显示每行数据来自哪个文件——在查询多个文件时非常有用。
- `METADATA$FILE_ROW_NUMBER`:显示源文件中的行号——有助于跟踪特定记录。

**使用场景:**
- **数据血缘**:跟踪每条记录来自哪个源文件。
- **调试**:通过文件和行号识别有问题的记录。
- **增量处理**:只处理特定的文件或文件中的特定范围。

## 相关文档

- [加载 NDJSON 文件](../03-load-semistructured/03-load-ndjson.md) - 如何将 NDJSON 数据加载到表中
- [NDJSON 文件格式选项](/sql/sql-reference/file-format-options#ndjson-options) - 完整的 NDJSON 格式配置
- [CREATE STAGE](/sql/sql-commands/ddl/stage/ddl-create-stage) - 管理外部和内部暂存区
- [查询元数据](./04-querying-metadata.md) - 关于元数据列的更多详细信息
- [CREATE STAGE](/sql/sql-commands/ddl/stage/ddl-create-stage) - 管理外部和内部暂存区(Stage)
Loading