1+ ``` markdown
12---
2- title : 输入与输出文件格式
3+ title: 输入 & 输出文件格式
34---
45import FunctionDescription from '@site/src/components/FunctionDescription';
56
6- <FunctionDescription description =" 引入或更新于:v1.2.530 " />
7+ <FunctionDescription description="引入或更新于: v1.2.713 "/>
78
8- Databend 支持多种文件格式作为数据加载或卸载的源和目标。本页介绍支持的文件格式及其可用选项 。
9+ Databend 接受多种文件格式作为数据加载或卸载的源和目标。本页介绍了支持的文件格式及其可用选项 。
910
1011## 语法
1112
12- 在语句中指定文件格式时,使用以下语法 :
13+ 要在语句中指定文件格式,请使用以下语法 :
1314
1415```sql
1516-- 指定标准文件格式
@@ -19,13 +20,13 @@ Databend 支持多种文件格式作为数据加载或卸载的源和目标。
1920... FILE_FORMAT = ( FORMAT_NAME = '<your-custom-format>' )
2021```
2122
22- - Databend 目前仅支持 ORC 作为数据源。暂不支持将数据卸载为 ORC 文件 。
23- - 如果在执行 COPY INTO 或从 Stage 执行 SELECT 操作时未指定 FILE_FORMAT,Databend 将使用创建 Stage 时初始定义的文件格式。若创建 Stage 时未显式指定文件格式 ,Databend 默认使用 PARQUET 格式。如果指定的 FILE_FORMAT 与创建 Stage 时定义的不同 ,Databend 将优先采用操作中指定的 FILE_FORMAT。
24- - 关于在 Databend 中管理自定义文件格式 ,请参阅[ 文件格式] ( ../10-sql-commands/00-ddl/13-file-format/index.md ) 。
23+ - Databend 目前仅支持将 ORC 作为源。尚不支持将数据卸载到 ORC 文件中 。
24+ - 如果在执行 COPY INTO 或从 Stage 执行 SELECT 操作时未指定 FILE_FORMAT,Databend 将使用您最初为 Stage 定义的文件格式。如果您在创建 Stage 期间未显式指定文件格式 ,Databend 默认使用 PARQUET 格式。如果您指定了与创建 Stage 时定义的 FILE_FORMAT 不同的 FILE_FORMAT ,Databend 将优先使用操作期间指定的 FILE_FORMAT。
25+ - 有关在 Databend 中管理自定义文件格式的信息 ,请参阅 [ 文件格式] ( ../10-sql-commands/00-ddl/13-file-format/index.md ) 。
2526
2627### formatTypeOptions
2728
28- ` formatTypeOptions ` 包含一个或多个选项,用于描述文件的其他格式细节。选项因文件格式而异。请参阅以下部分了解每种支持的文件格式的可用选项 。
29+ ` formatTypeOptions ` 包括一个或多个选项,用于描述有关文件的其他格式详细信息。这些选项因文件格式而异。请参阅下面的部分,了解每种支持的文件格式的可用选项 。
2930
3031``` sql
3132formatTypeOptions ::=
@@ -41,13 +42,13 @@ formatTypeOptions ::=
4142
4243## CSV 选项
4344
44- Databend 接受符合 [ RFC 4180] ( https://www.rfc-editor.org/rfc/rfc4180 ) 的 CSV 文件,并遵循以下条件 :
45+ Databend 接受符合 [ RFC 4180] ( https://www.rfc-editor.org/rfc/rfc4180 ) 的 CVS 文件,并受以下条件的约束 :
4546
46- - 若字符串包含 [ QUOTE] ( #quote ) 、[ ESCAPE] ( #escape ) 、[ RECORD_DELIMITER] ( #record_delimiter ) 或 [ FIELD_DELIMITER] ( #field_delimiter ) 字符,则必须加引号 。
47- - 在引号字符串中,除 [ QUOTE] ( #quote ) 外,不会转义任何字符 。
48- - [ FIELD_DELIMITER] ( #field_delimiter ) 和 [ QUOTE] ( #quote ) 之间不应有空格 。
49- - 若字符串来自序列化的 Array 或 Struct 字段,将在 CSV 中加引号 。
50- - 若您开发程序并从中生成 CSV 文件,Databend 建议使用编程语言的 CSV 库。
47+ - 如果字符串包含 [ QUOTE] ( #quote ) 、[ ESCAPE] ( #escape ) 、[ RECORD_DELIMITER] ( #record_delimiter ) 或 [ FIELD_DELIMITER] ( #field_delimiter ) 的字符,则必须引用该字符串 。
48+ - 除了 [ QUOTE] ( #quote ) 之外,在带引号的字符串中不会转义任何字符 。
49+ - [ FIELD_DELIMITER] ( #field_delimiter ) 和 [ QUOTE] ( #quote ) 之间不应留有空格 。
50+ - 如果字符串来自序列化的 Array 或 Struct 字段,则将在 CSV 中引用该字符串 。
51+ - 如果您开发了一个程序并从中生成 CSV 文件,Databend 建议使用该编程语言中的 CSV 库。
5152
5253### RECORD_DELIMITER
5354
@@ -56,7 +57,7 @@ Databend 接受符合 [RFC 4180](https://www.rfc-editor.org/rfc/rfc4180) 的 CSV
5657** 可用值** :
5758
5859- ` \r\n `
59- - 一个非字母数字的单字节字符,如 ` # ` 和 ` | ` 。
60+ - 一个字节的非字母数字字符,例如 ` # ` 和 ` | ` 。
6061- 带有转义字符的字符:` \b ` 、` \f ` 、` \r ` 、` \n ` 、` \t ` 、` \0 ` 、` \xHH `
6162
6263** 默认值** :` \n `
@@ -67,34 +68,187 @@ Databend 接受符合 [RFC 4180](https://www.rfc-editor.org/rfc/rfc4180) 的 CSV
6768
6869** 可用值** :
6970
70- - 一个非字母数字的单字节字符,如 ` # ` 和 ` | ` 。
71+ - 一个字节的非字母数字字符,例如 ` # ` 和 ` | ` 。
7172- 带有转义字符的字符:` \b ` 、` \f ` 、` \r ` 、` \n ` 、` \t ` 、` \0 ` 、` \xHH `
7273
73- ** 默认值** :` , ` (逗号)
74+ ** 默认值** :` , ` (逗号)
7475
75- ### QUOTE
76+ ### QUOTE (仅加载)
7677
77- 在 CSV 文件中为字符串加引号 。对于数据加载,除非字符串包含 [ QUOTE] ( #quote ) 、[ ESCAPE] ( #escape ) 、[ RECORD_DELIMITER] ( #record_delimiter ) 或 [ FIELD_DELIMITER] ( #field_delimiter ) 字符,否则不需要引号 。
78+ 引用 CSV 文件中的字符串 。对于数据加载,除非字符串包含 [ QUOTE] ( #quote ) 、[ ESCAPE] ( #escape ) 、[ RECORD_DELIMITER] ( #record_delimiter ) 或 [ FIELD_DELIMITER] ( #field_delimiter ) 的字符,否则引号不是必需的 。
7879
79- ::: note
80- ** 仅用于数据加载** :此选项在从 Databend 卸载数据时不可用。
81- :::
82-
83- ** 可用值** :` ' ` 、` " ` 或 `(反引号)
80+ ** 可用值** :` ' ` , ` " ` 或 `(反引号)
8481
8582** 默认值** :` " `
8683
8784### ESCAPE
8885
89- 在引号字符串中转义引号 。
86+ 转义带引号的字符串中的引号 。
9087
9188** 可用值** :` '\\' ` 或 ` '' `
9289
9390** 默认值** :` '' `
9491
95- ### SKIP_HEADER
92+ ### SKIP_HEADER (仅加载)
93+
94+ 指定从文件开头跳过的行数。
95+
96+ ** 默认值** :` 0 `
97+
98+ ### NAN_DISPLAY (仅加载)
99+
100+ 指定如何在查询结果中显示 "NaN"(非数字)值。
101+
102+ ** 可用值** :必须是文字 ` 'nan' ` 或 ` 'null' ` (不区分大小写)
103+
104+ ** 默认值** :` 'NaN' `
105+
106+ ### NULL_DISPLAY (仅加载)
107+
108+ 指定如何在查询结果中显示 NULL 值。
109+
110+ ** 默认值** :` '\N' `
111+
112+ ### ERROR_ON_COLUMN_COUNT_MISMATCH (仅加载)
113+
114+ ERROR_ON_COLUMN_COUNT_MISMATCH 是一个布尔选项,当设置为 true 时,指定如果数据文件中的列数与目标表中的列数不匹配,则应引发错误。将其设置为 true 有助于确保加载过程中的数据完整性和一致性。
115+
116+ ** 默认值** :` true `
117+
118+ ### EMPTY_FIELD_AS (仅加载)
119+
120+ 指定在 CSV 数据加载到表中时,遇到空字段(包括 ` ,, ` 和 ` ,"", ` )时应使用的值。
121+
122+ | 可用值 | 描述 |
123+ | --------------------| ----------------------------------------------------------------------------------|
124+ | ` null ` (默认) | 将空字段解释为 NULL 值。仅适用于可为空的列。 |
125+ | ` string ` | 将空字段解释为空字符串 ('')。仅适用于 String 列。 |
126+ | ` field_default ` | 对空字段使用列的默认值。 |
127+
128+ ### OUTPUT_HEADER (仅卸载)
129+
130+ 指定在使用 ` COPY INTO <location> ` 命令导出数据时,是否在 CSV 文件中包含标题行。默认为 ` false ` 。
131+
132+ ### BINARY_FORMAT
133+
134+ 控制数据导出和导入操作期间的二进制编码格式,可用值为 ` HEX ` (默认)和 ` BASE64 ` 。
135+
136+ ### COMPRESSION
137+
138+ 指定压缩算法。
139+
140+ | 可用值 | 描述 |
141+ | --------------------| -------------------------------------------------------------------|
142+ | ` NONE ` (默认) | 表示文件未压缩。 |
143+ | ` AUTO ` | 通过文件扩展名自动检测压缩 |
144+ | ` GZIP ` | |
145+ | ` BZ2 ` | |
146+ | ` BROTLI ` | 如果加载/卸载 Brotli 压缩文件,则必须指定。 |
147+ | ` ZSTD ` | 支持 Zstandard v0.8(及更高版本)。 |
148+ | ` DEFLATE ` | Deflate 压缩文件(带有 zlib 标头,RFC1950)。 |
149+ | ` RAW_DEFLATE ` | Deflate 压缩文件(没有任何标头,RFC1951)。 |
150+ | ` XZ ` | |
151+
152+ ## TSV 选项
153+
154+ Databend 在处理 TSV 文件时受以下条件的约束:
155+
156+ - TSV 文件中的这些字符将被转义:` \b ` 、` \f ` 、` \r ` 、` \n ` 、` \t ` 、` \0 ` 、` \\ ` 、` \' ` 、[ RECORD_DELIMITER] ( #record_delimiter-1 ) 、[ FIELD_DELIMITER] ( #field_delimiter-1 ) 。
157+ - 目前不支持引用或封闭。
158+ - 如果字符串来自序列化的 Array 或 Struct 字段,则将在 CSV 中引用该字符串。
159+ - Null 被序列化为 ` \N ` 。
96160
97- 指定从文件开头跳过多少行。
98161
99162::: note
100- ** 仅
163+ 1 . 在 Databend 中,TSV 和 CSV 之间的主要区别不是使用制表符代替逗号作为字段分隔符(可以通过选项更改),而是使用转义而不是引用来解决 [ 分隔符冲突] ( https://en.wikipedia.org/wiki/Delimiter#Delimiter_collision )
164+ 2 . 我们建议使用 CSV 作为存储格式,因为它具有正式标准。
165+ 3 . TSV 可用于加载以下文件生成的文件
166+ 1 . Clickhouse TSV 文件格式。
167+ 2 . MySQL ` mysqldump ` 命令,带有选项 ` --tab ` ,没有 ` --fields-enclosed-by ` 或 ` --fields-optinally-enclosed-by ` ,如果指定了后两个,则改用 CSV。
168+ 3 . Snowflake CSV,没有 ` ESCAPE_UNENCLOSED_FIELD ` 。如果指定了 ` ESCAPE_UNENCLOSED_FIELD ` ,则改用 CSV。
169+ :::
170+
171+ ### RECORD_DELIMITER
172+
173+ 分隔输入文件中的记录。
174+
175+ ** 可用值** :
176+
177+ - ` \r\n `
178+ - 任意字符,例如 ` # ` 和 ` | ` 。
179+ - 带有转义字符的字符:` \b ` 、` \f ` 、` \r ` 、` \n ` 、` \t ` 、` \0 ` 、` \xHH `
180+
181+ ** 默认值** :` \n `
182+
183+ ### FIELD_DELIMITER
184+
185+ 分隔记录中的字段。
186+
187+ ** 可用值** :
188+
189+ - 非字母数字字符,例如 ` # ` 和 ` | ` 。
190+ - 带有转义字符的字符:` \b ` 、` \f ` 、` \r ` 、` \n ` 、` \t ` 、` \0 ` 、` \xHH `
191+
192+ ** 默认值** :` \t ` (TAB)
193+
194+ ### COMPRESSION
195+
196+ 与 [ CSV 的 COMPRESSION 选项] ( #compression ) 相同。
197+
198+ ## NDJSON 选项
199+
200+ ### NULL_FIELD_AS (仅加载)
201+
202+ 指定在数据加载期间如何处理 null 值。有关可能的配置,请参阅下表中的选项。
203+
204+ | 可用值 | 描述 |
205+ | -------------------------| ---------------------------------------------------------------------------------------------------------|
206+ | ` NULL ` (默认) | 将 null 值解释为可为空字段的 NULL。将为不可为空字段生成错误。 |
207+ | ` FIELD_DEFAULT ` | 对 null 值使用字段的默认值。 |
208+
209+ ### MISSING_FIELD_AS (仅加载)
210+
211+ 确定在数据加载期间遇到缺失字段时的行为。有关可能的配置,请参阅下表中的选项。
212+
213+ | 可用值 | 描述 |
214+ | --------------------| --------------------------------------------------------------------------------------------|
215+ | ` ERROR ` (默认) | 如果遇到缺失字段,则生成错误。 |
216+ | ` NULL ` | 将缺失字段解释为 NULL 值。将为不可为空字段生成错误。 |
217+ | ` FIELD_DEFAULT ` | 对缺失字段使用字段的默认值。 |
218+
219+ ### COMPRESSION
220+
221+ 与 [ CSV 的 COMPRESSION 选项] ( #compression ) 相同。
222+
223+ ## PARQUET 选项
224+
225+ ### MISSING_FIELD_AS (仅加载)
226+
227+ 确定在数据加载期间遇到缺失字段时的行为。有关可能的配置,请参阅下表中的选项。
228+
229+ | 可用值 | 描述 |
230+ | --------------------| --------------------------------------------------------------------------------------------|
231+ | ` ERROR ` (默认) | 如果遇到缺失字段,则生成错误。 |
232+ | ` FIELD_DEFAULT ` | 对缺失字段使用字段的默认值。 |
233+
234+ ### COMPRESSION (仅卸载)
235+
236+ 指定压缩算法,该算法用于压缩文件的内部块,而不是整个文件,因此输出仍为 Parquet 格式。
237+
238+ | 可用值 | 描述 |
239+ | --------------------| ------------------------------------------------------------------------|
240+ | ` ZSTD ` (默认) | 支持 Zstandard v0.8(及更高版本)。 |
241+ | ` SNAPPY ` | Snappy 是一种流行的快速压缩算法,通常与 Parquet 一起使用。 |
242+
243+
244+ ## ORC 选项
245+
246+ ### MISSING_FIELD_AS (仅加载)
247+
248+ 确定在数据加载期间遇到缺失字段时的行为。有关可能的配置,请参阅下表中的选项。
249+ ```
250+
251+ | 可选值 | 描述 |
252+ |------------------|------------------------------------------------------------------------------------------------|
253+ | `ERROR` (默认) | 如果遇到缺失字段,则生成错误。 |
254+ | `FIELD_DEFAULT` | 对缺失字段使用该字段的默认值。 |
0 commit comments