输入 & 输出文件格式
Databend 接受多种文件格式,作为数据导入或导出的源和目标。 例如, 你可以利用 COPY INTO table 命令 或 流式载入 API 等方式,将数据从文件导入到 Databend。 你也可以利用COPY INTO location 命令 ,将数据从 Databend 导出到文件。 要做到这一点,你需要通过下面的语法将文件格式相关的信息告知 Databend :
FILE_FORMAT = ( TYPE = { CSV | TSV | NDJSON | PARQUET | XML } [ formatTypeOptions ] )
Type
: 指定文件格式。 必须是上面所列出的 Databend 支持的文件格式之一。
目前只能将 XML 格式作为 Databend 的源格式使用。 尚不支持将数据以 XML 格式导出。
formatTypeOptions
: 包括一个或多个选项,用于描述文件格式相关的其他详细信息。 选项因文件格式而异。 参阅下面的部分以获取每种受支持的文件格式的可用选项。
formatTypeOptions ::=
RECORD_DELIMITER = '<character>'
FIELD_DELIMITER = '<character>'
SKIP_HEADER = <integer>
QUOTE = '<character>'
ESCAPE = '<character>'
NAN_DISPLAY = '<string>'
ROW_TAG = '<string>'
COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | XZ | NONE
CSV 选项
Databend 接受与 RFC 4180 兼容的 CVS 文件,并受以下条件约束:
- 如果字符串包含 QUOTE、 ESCAPE、RECORD_DELIMITER 或 FIELD_DELIMITER 中的字符,则必须使用引号将其括起来。
- 除了 QUOTE 之外,引号括起来的字符串中不会有任何字符被转义。
- FIELD_DELIMITER 和 QUOTE 之间不应留下任何空间。
- 如果字符串来自序列化数组或结构字段,在 CSV 中需要用引号括起来。
- 如果你开发了一个程序并从它中生成CSV文件,Databend 建议使用编程语言生态中的 CSV 库来完成相关工作。
- Databend 可能无法识别从 MySQL 导出的 CSV 格式文件,除非满足以下条件:
ESCAPED BY
为空。ENCLOSED BY
不为空。 :::note
如果不符合上述条件,文件将被识别为 TSV 格式。 欲了解更多ESCAPED BY
和ENCLOSED BY
的相关信息,请参阅https://dev.mysql.com/doc/refman/8.0/en/load-data.html 。 :::
RECORD_DELIMITER
分隔输入文件中的记录。
可用值:
\r\n
- 一个任意字符,例如
a
和|
。 - 一个带有转义字符的字符:
\b
、\f
、\r
、\n
、\t
、\0
、\xHH
默认值:\n
FIELD_DELIMITER
分隔记录中的字段。
可用值:
\r\n
- 一个任意字符,例如
a
和|
。 - 一个带有转义字符的字符:
\b
、\f
、\r
、\n
、\t
、\0
、\xHH
默认值:,
(逗号)
QUOTE
用于将 CSV 文件中的字符串括起来。 对于数据导入,除非字符串中包含 QUOTE、ESCAPE、RECORD_DELIMITER 或 FIELD_DELIMITER 中的字符,否则无需使用引号将字符串括起来。
仅用于数据导入:当你从 Databend 导出数据时,此选项不可用。
可用值:\'
或 \"
.
默认值:\"
ESCAPE
用于在被引号括起来的的字符串中转义引号。
可用值:\'
或 \"
或 \\
.
默认值:\"
SKIP_HEADER
指定从文件开头要跳过多少行。
仅用于数据导入:当你从 Databend 导出数据时,此选项不可用。
默认值:0
NAN_DISPLAY
可用值:必须是字面量 'nan'
或 'null'
(大小写不敏感)
默认值:'NaN'
COMPRESSION
指定压缩算法。
默认值:NONE
可用值:
数值 | 备注 |
---|---|
AUTO | 通过文件扩展名自动检测压缩算法 |
GZIP | |
BZ2 | |
BROTLI | 导入/导出 Brotli 压缩文件时必须指定。 |
ZSTD | 支持 Zstandard v0.8(及以上版本)。 |
DEFLATE | Deflate-compressed 文件(带zlib header,RFC1950)。 |
RAW_DEFLATE | Deflate-compressed 文件(不带任何 header,RFC1951)。 |
XZ | |
NONE | 表示文件没有被压缩。 |
TSV 选项
Databend 在处理 TSV 文件时必须遵循以下约束:
- TSV 文件中的这些字符将被转义:
\b
、\f
、\r
、\n
、\t
、\0
、\\`、
\'`、RECORD_DELIMITER、FIELD_DELIMITER 。 - 目前不支持引号,也不支持括号。
- 如果字符串来自序列化数组或结构字段,在 CSV 中需要用引号括起来。
- 空值序列化为
\N
RECORD_DELIMITER
分隔输入文件中的记录。
可用值:
\r\n
- 一个任意字符,例如
a
和|
。 - 一个带有转义字符的字符:
\b
、\f
、\r
、\n
、\t
、\0
、\xHH
默认值:\n
FIELD_DELIMITER
分隔记录中的字段。
可用值:
\r\n
- 一个任意字符,例如
a
和|
。 - 一个带有转义字符的字符:
\b
、\f
、\r
、\n
、\t
、\0
、\xHH
默认值:\t
(TAB)
COMPRESSION
与 CSV 相同的 COMPRESION 选项。
NDJSON 选项
COMPRESSION
与 CSV 相同的 COMPRESION 选项。
PARQUET 选项
没有可用的选项。
XML 选项
COMPRESSION
与 CSV 相同的 COMPRESION 选项。
ROW_TAG
用于选择作为记录解码的 XML 元素。
默认值:'row'