跳转到主要内容

输入 & 输出文件格式

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 文件,并受以下条件约束:

  • 如果字符串包含 QUOTEESCAPERECORD_DELIMITERFIELD_DELIMITER 中的字符,则必须使用引号将其括起来。
  • 除了 QUOTE 之外,引号括起来的字符串中不会有任何字符被转义。
  • FIELD_DELIMITERQUOTE 之间不应留下任何空间。
  • 如果字符串来自序列化数组或结构字段,在 CSV 中需要用引号括起来。
  • 如果你开发了一个程序并从它中生成CSV文件,Databend 建议使用编程语言生态中的 CSV 库来完成相关工作。
  • Databend 可能无法识别从 MySQL 导出的 CSV 格式文件,除非满足以下条件:

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 文件中的字符串括起来。 对于数据导入,除非字符串中包含 QUOTEESCAPERECORD_DELIMITERFIELD_DELIMITER 中的字符,否则无需使用引号将字符串括起来。

备注

仅用于数据导入:当你从 Databend 导出数据时,此选项不可用。

可用值\'\".

默认值\"

ESCAPE

用于在被引号括起来的的字符串中转义引号。

可用值\'\"\\ .

默认值\"

SKIP_HEADER

指定从文件开头要跳过多少行。

备注

仅用于数据导入:当你从 Databend 导出数据时,此选项不可用。

默认值0

NAN_DISPLAY

可用值:必须是字面量 'nan''null' (大小写不敏感)

默认值'NaN'

COMPRESSION

指定压缩算法。

默认值NONE

可用值

数值备注
AUTO通过文件扩展名自动检测压缩算法
GZIP
BZ2
BROTLI导入/导出 Brotli 压缩文件时必须指定。
ZSTD支持 Zstandard v0.8(及以上版本)。
DEFLATEDeflate-compressed 文件(带zlib header,RFC1950)。
RAW_DEFLATEDeflate-compressed 文件(不带任何 header,RFC1951)。
XZ
NONE表示文件没有被压缩。

TSV 选项

Databend 在处理 TSV 文件时必须遵循以下约束:

  • TSV 文件中的这些字符将被转义:\b\f\r\n\t\0\\`、\'`、RECORD_DELIMITERFIELD_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'