ALTER FILE FORMAT

修改现有文件格式对象的属性。当前,仅支持以下操作:重命名文件格式、更改文件格式选项(基于类型)以及添加/更改注释。要进行任何其他更改,必须删除文件格式,然后重新创建。

另请参阅:

CREATE FILE FORMATDROP FILE FORMATSHOW FILE FORMATSDESCRIBE FILE FORMAT

语法

ALTER FILE FORMAT [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER FILE FORMAT [ IF EXISTS ] <name> SET { [ formatTypeOptions ] [ COMMENT = '<string_literal>' ] }
Copy

其中:

formatTypeOptions ::=
-- If TYPE = CSV
     COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
     RECORD_DELIMITER = '<character>' | NONE
     FIELD_DELIMITER = '<character>' | NONE
     FILE_EXTENSION = '<string>'
     PARSE_HEADER = TRUE | FALSE
     SKIP_HEADER = <integer>
     SKIP_BLANK_LINES = TRUE | FALSE
     DATE_FORMAT = '<string>' | AUTO
     TIME_FORMAT = '<string>' | AUTO
     TIMESTAMP_FORMAT = '<string>' | AUTO
     BINARY_FORMAT = HEX | BASE64 | UTF8
     ESCAPE = '<character>' | NONE
     ESCAPE_UNENCLOSED_FIELD = '<character>' | NONE
     TRIM_SPACE = TRUE | FALSE
     FIELD_OPTIONALLY_ENCLOSED_BY = '<character>' | NONE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
     ERROR_ON_COLUMN_COUNT_MISMATCH = TRUE | FALSE
     REPLACE_INVALID_CHARACTERS = TRUE | FALSE
     EMPTY_FIELD_AS_NULL = TRUE | FALSE
     SKIP_BYTE_ORDER_MARK = TRUE | FALSE
     ENCODING = '<string>' | UTF8
-- If TYPE = JSON
     COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
     DATE_FORMAT = '<string>' | AUTO
     TIME_FORMAT = '<string>' | AUTO
     TIMESTAMP_FORMAT = '<string>' | AUTO
     BINARY_FORMAT = HEX | BASE64 | UTF8
     TRIM_SPACE = TRUE | FALSE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
     FILE_EXTENSION = '<string>'
     ENABLE_OCTAL = TRUE | FALSE
     ALLOW_DUPLICATE = TRUE | FALSE
     STRIP_OUTER_ARRAY = TRUE | FALSE
     STRIP_NULL_VALUES = TRUE | FALSE
     REPLACE_INVALID_CHARACTERS = TRUE | FALSE
     IGNORE_UTF8_ERRORS = TRUE | FALSE
     SKIP_BYTE_ORDER_MARK = TRUE | FALSE
-- If TYPE = AVRO
     COMPRESSION = AUTO | GZIP | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
     TRIM_SPACE = TRUE | FALSE
     REPLACE_INVALID_CHARACTERS = TRUE | FALSE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
-- If TYPE = ORC
     TRIM_SPACE = TRUE | FALSE
     REPLACE_INVALID_CHARACTERS = TRUE | FALSE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
-- If TYPE = PARQUET
     COMPRESSION = AUTO | LZO | SNAPPY | NONE
     SNAPPY_COMPRESSION = TRUE | FALSE
     BINARY_AS_TEXT = TRUE | FALSE
     USE_LOGICAL_TYPE = TRUE | FALSE
     TRIM_SPACE = TRUE | FALSE
     REPLACE_INVALID_CHARACTERS = TRUE | FALSE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
-- If TYPE = XML
     COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
     IGNORE_UTF8_ERRORS = TRUE | FALSE
     PRESERVE_SPACE = TRUE | FALSE
     STRIP_OUTER_ELEMENT = TRUE | FALSE
     DISABLE_SNOWFLAKE_DATA = TRUE | FALSE
     DISABLE_AUTO_CONVERT = TRUE | FALSE
     REPLACE_INVALID_CHARACTERS = TRUE | FALSE
     SKIP_BYTE_ORDER_MARK = TRUE | FALSE
Copy

参数

name

指定要更改的文件格式的标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。

RENAME TO new_name

为文件格式指定新的标识符;对于架构必须是唯一的。

有关更多详细信息,请参阅 标识符要求

可以将对象移动到其他数据库和/或架构,同时选择重命名对象。为此,请指定一个限定 new_name 值,该值分别以 db_name.schema_name.object_nameschema_name.object_name 的形式包含新数据库和/或架构名称。

备注

  • 目标数据库和/或架构必须已存在。此外,新位置中不能存在同名对象;否则,该语句将返回错误。

  • 除非 对象所有者(即对对象拥有 OWNERSHIP 权限的角色)也拥有目标架构,否则禁止将对象移动到托管访问架构。

重命名对象时,引用该对象的其他对象必须使用新名称进行更新。

SET ...

指定要为文件格式设置的选项/属性:

FILE_FORMAT = ( ... )

修改文件格式的特定格式选项。有关更多详细信息,请参阅 格式类型选项 (本主题内容)。

COMMENT = 'string_literal'

为文件格式添加注释或覆盖现有注释。

格式类型选项 (formatTypeOptions)

根据指定的文件格式类型 (TYPE = ...),可以包含以下一个或多个特定于格式的选项(用空格、逗号或换行符分隔):

TYPE = CSV

COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
使用:

数据加载、数据卸载和外部表

定义:
  • 加载数据时,指定数据文件的当前压缩算法。Snowflake 使用此选项来检测 已压缩 的数据文件是如何压缩的,以便提取文件中的压缩数据进行加载。

  • 卸载数据时,使用指定的压缩算法压缩数据文件。

:

支持的值

备注

AUTO

加载数据时,压缩算法会自动检测,但使用 Brotli 的压缩文件除外,目前无法自动检测。卸载数据时,文件会使用默认格式 gzip 自动压缩。

GZIP

BZ2

BROTLI

加载/卸载 Brotli 压缩文件时必须进行指定。

ZSTD

支持 Zstandard v0.8(及更高版本)。

DEFLATE

使用 Deflate 压缩的文件(带有 zlib 标头、RFC1950)。

RAW_DEFLATE

使用 Raw Deflate 压缩的文件(无标头、RFC1951)。

NONE

在加载数据时,表示文件尚未压缩。在卸载数据时,指定卸载的未压缩文件。

默认值:

AUTO

RECORD_DELIMITER = 'character' | NONE
使用:

数据加载、数据卸载和外部表

定义:

一个或多个单字节或多字节字符,用于分隔输入文件(数据加载)或卸载文件(数据卸载)中的记录。接受常见的转义序列或以下单字节或多字节字符:

单字节字符:

八进制值(以 \\ 为前缀)或十六进制值(以 0x\x 为前缀)。例如,对于由重音符号 (^) 字符分隔的记录,请指定八进制 (\\136) 或十六进制 (0x5e) 值。

多字节字符:

十六进制值(前缀为 \x)。例如,对于由分 (¢) 字符分隔的记录,请指定十六进制 (\xC2\xA2) 值。

RECORD_DELIMITER 或 FIELD_DELIMITER 分隔符不能是其他文件格式选项(例如 FIELD_DELIMITER = 'aa' RECORD_DELIMITER = 'aabb')的分隔符的子字符串。

指定的分隔符必须是有效的 UTF-8 字符,而不是随机的字节序列。另请注意,分隔符限制为最多 20 个字符。

也接受 NONE 的值。

默认值:
数据加载:

换行符。请注意,“换行符”是合乎逻辑的,因而 \r\n 可以理解为 Windows 平台上文件的换行符。

数据卸载:

换行符 (\n)。

FIELD_DELIMITER = 'character' | NONE
使用:

数据加载、数据卸载和外部表

定义:

一个或多个单字节或多字节字符,用于分隔输入文件(数据加载)或卸载文件(数据卸载)中的字段。接受常见的转义序列或以下单字节或多字节字符:

单字节字符:

八进制值(以 \\ 为前缀)或十六进制值(以 0x\x 为前缀)。例如,对于由重音符号 (^) 字符分隔的记录,请指定八进制 (\\136) 或十六进制 (0x5e) 值。

多字节字符:

十六进制值(前缀为 \x)。例如,对于由分 (¢) 字符分隔的记录,请指定十六进制 (\xC2\xA2) 值。

RECORD_DELIMITER 或 FIELD_DELIMITER 分隔符不能是其他文件格式选项(例如 FIELD_DELIMITER = 'aa' RECORD_DELIMITER = 'aabb')的分隔符的子字符串。

备注

对于非 ASCII 字符,必须使用十六进制字节序列值来获取确定性行为。

指定的分隔符必须是有效的 UTF-8 字符,而不是随机的字节序列。另请注意,分隔符限制为最多 20 个字符。

也接受 NONE 的值。

默认值:

逗号 (,)

FILE_EXTENSION = 'string' | NONE
使用:

仅数据卸载

定义:

指定卸载到暂存区的文件的扩展名。接受任何扩展名。用户负责指定可由任何所需软件或服务读取的文件扩展名。

默认值:

null 表示文件扩展名由格式类型 .csv[compression] 确定,其中 compression 是由压缩方法添加的扩展名(如果已设置 COMPRESSION)。

备注

如果 SINGLE 复制选项为 TRUE,则默认情况下,COPY 命令会卸载没有文件扩展名的文件。要指定文件扩展名,请在 internal_locationexternal_location 路径中提供文件名和扩展名(例如 copy into @stage/data.csv)。

PARSE_HEADER = TRUE | FALSE
使用:

仅加载数据

定义:

布尔,指定是否使用数据文件中的第一行标题来确定列名称。

此文件格式选项仅适用于以下操作:

  • 使用 INFER_SCHEMA 函数自动检测列定义。

  • 使用 INFER_SCHEMA 函数和 MATCH_BY_COLUMN_NAME 复制选项将 CSV 数据加载到单独的列中。

如果该选项设置为 TRUE,则第一行标题将用于确定列名称。默认值 FALSE 将返回 c* 形式的列名称,其中 * 是列的位置。

请注意,PARSE_HEADER = TRUE 时不支持 SKIP_HEADER 选项。

默认:FALSE

SKIP_HEADER = integer
使用:

数据加载和外部表

定义:

要跳过的文件开头的行数。

注意,SKIP_HEADER 不使用 RECORD_DELIMITER 或 FIELD_DELIMITER 值来决定标头行;相反,它会直接跳过文件中指定数量的以 CRLF(回车符、换行)分隔的行。然后,使用 RECORD_DELIMITER 和 FIELD_DELIMITER 确定要加载的数据行。

默认值:

0

SKIP_BLANK_LINES = TRUE | FALSE
使用:

数据加载和外部表

定义:

布尔,指定是否跳过数据文件中遇到的任何空行;否则,空行将产生记录结束错误(默认行为)。

默认:FALSE

DATE_FORMAT = 'string' | AUTO
使用:

数据加载和卸载

定义:

定义数据文件(数据加载)或表(数据卸载)中日期值的格式。如果未指定值或为 AUTO,则使用 :ref:`label-DATE_INPUT_FORMAT`(数据加载)或 :ref:`label-DATE_OUTPUT_FORMAT`(数据卸载)参数的值。

默认值:

AUTO

TIME_FORMAT = 'string' | AUTO
使用:

数据加载和卸载

定义:

定义数据文件(数据加载)或表(数据卸载)中时间值的格式。如果未指定值或为 AUTO,则使用 :ref:`label-TIME_INPUT_FORMAT`(数据加载)或 :ref:`label-TIME_OUTPUT_FORMAT`(数据卸载)参数的值。

默认值:

AUTO

TIMESTAMP_FORMAT = string' | AUTO
使用:

数据加载和卸载

定义:

定义数据文件(数据加载)或表(数据卸载)中时间戳值的格式。如果未指定值或为 AUTO,则使用 :ref:`label-TIMESTAMP_INPUT_FORMAT`(数据加载)或 :ref:`label-TIMESTAMP_OUTPUT_FORMAT`(数据卸载)参数的值。

默认值:

AUTO

BINARY_FORMAT = HEX | BASE64 | UTF8
使用:

数据加载和卸载

定义:

定义二进制输入或输出的编码格式。在表中的二进制列中加载数据或从二进制列中卸载数据时,可以使用该选项。

默认值:

HEX

ESCAPE = 'character' | NONE
使用:

数据加载和卸载

定义:

用作封闭或未封闭字段值的转义字符的单字节字符串。转义字符对字符序列中的后续字符调用替代解释。您可以使用 ESCAPE 字符将数据中 FIELD_OPTIONALLY_ENCLOSED_BY 字符的实例解释为字面量。

接受常见的转义序列、八进制值或十六进制值。

加载数据:

仅指定封闭字段的转义字符。通过设置 FIELD_OPTIONALLY_ENCLOSED_BY 指定用于包围字段的字符。

备注

此文件格式选项仅支持单字节字符。请注意,UTF-8 字符编码将高阶 ASCII 字符表示为多字节字符。如果数据文件使用 UTF-8 字符集进行编码,则不能将高阶 ASCII 字符指定为选项值。

此外,如果指定高阶 ASCII 字符,建议将文件格式选项设置为 ENCODING = 'string' 数据文件的字符编码,以确保正确解释该字符。

卸载数据:

如果设置此选项,它将替换 ESCAPE_UNENCLOSED_FIELD 的转义字符集。

默认值:

NONE

ESCAPE_UNENCLOSED_FIELD = 'character' | NONE
使用:

数据加载、数据卸载和外部表

定义:

仅用作未封闭字段值的转义字符的单字节字符串。转义字符对字符序列中的后续字符调用替代解释。您可以使用 ESCAPE 字符将数据中 FIELD_DELIMITERRECORD_DELIMITER 字符的实例解释为字面量。转义字符还可用于对数据中自身的实例进行转义。

接受常见的转义序列、八进制值或十六进制值。

加载数据:

仅指定未封闭字段的转义字符。

备注

  • 默认值为 \\。如果数据文件中的行以反斜杠 (\) 字符结尾,则此字符将转义为 RECORD_DELIMITER 文件格式选项指定的换行符或回车符。因此,加载操作会将此行和下一行视为单行数据。若要避免此问题,请将值设置为 NONE

  • 此文件格式选项仅支持单字节字符。请注意,UTF-8 字符编码将高阶 ASCII 字符表示为多字节字符。如果数据文件使用 UTF-8 字符集进行编码,则不能将高阶 ASCII 字符指定为选项值。

    此外,如果指定高阶 ASCII 字符,建议将文件格式选项设置为 ENCODING = 'string' 数据文件的字符编码,以确保正确解释该字符。

卸载数据:

如果设置了 ESCAPE,该文件格式选项的转义字符集将替换此选项。

默认值:

反斜杠 (\\)

TRIM_SPACE = TRUE | FALSE
使用:

数据加载和外部表

定义:

布尔,指定是否从字段中移除空格。

例如,如果您的外部数据库软件将字段放在引号中,但插入了前导空格,则 Snowflake 会读取前导空格而不是左引号字符作为字段的开头(即引号被解释为字段数据字符串的一部分)。可将选项设置为 TRUE,在数据加载期间移除不需要的空格。

再举一个例子,如果字符串两边的引号两边有前导空格或尾随空格,则可以使用此选项移除周围的空格,并使用 FIELD_OPTIONALLY_ENCLOSED_BY 选项移除引号字符。请注意,引号 的任何空格都将保留。例如,假设 FIELD_DELIMITER = '|'FIELD_OPTIONALLY_ENCLOSED_BY = '"'

|"Hello world"|    /* loads as */  >Hello world<
|" Hello world "|  /* loads as */  > Hello world <
| "Hello world" |  /* loads as */  >Hello world<
Copy

(此示例中的括号未加载;它们用于分隔加载字符串的开头和结尾)

默认值:

FALSE

FIELD_OPTIONALLY_ENCLOSED_BY = 'character' | NONE
使用:

数据加载、数据卸载和外部表

定义:

用于包围字符串的字符。值可以是 NONE、单引号字符 (') 或双引号字符 (")。要使用单引号字符,请使用八进制或十六进制表示形式 (0x27) 或双单引号转义 ('')。

仅数据卸载:

源表中的字段包含此字符时,Snowflake 使用相同的字符对其进行转义以进行卸载。例如,如果值是双引号字符,且字段包含字符串 A "B" C,则 Snowflake 会按如下方式对双引号进行转义以进行卸载:

A ""B"" C

默认值:

NONE

NULL_IF = ( 'string1' [ , 'string2' , ... ] )
使用:

数据加载、数据卸载和外部表

定义:

用于与 SQL NULL 相互转换的字符串:

  • 加载数据时,Snowflake 会将数据加载源中的这些值替换为 SQL NULL。若要指定多个字符串,请将字符串列表放在括号中,并使用逗号分隔每个值。

    请注意,无论数据类型如何,Snowflake 都会将该值的所有实例转换为 NULL。例如,如果 2 指定为值,则转换为字符串或数字的所有 2 实例。

    例如:

    NULL_IF = ('\N', 'NULL', 'NUL', '')

    请注意,此选项可以包含空字符串。

  • 卸载数据时:Snowflake 会将 SQL NULL 值转换为列表中的第一个值。

默认值:

\\N``(即 NULL,假设 :code:`ESCAPE_UNENCLOSED_FIELD` 值为 ``\\

ERROR_ON_COLUMN_COUNT_MISMATCH = TRUE | FALSE
使用:

仅加载数据

定义:

布尔,指定在输入文件中的分隔列数(即字段)与相应表中的列数不匹配时是否生成解析错误。

如果设置为 FALSE,则不会生成错误,并且加载将继续。如果文件已成功加载:

  • 如果输入文件包含的记录字段数多于表中的列数,则匹配的字段将按文件中的出现顺序加载,其余字段将不加载。

  • 如果输入文件包含的记录字段数少于表中的列数,则表中不匹配的列将加载 NULL 值。

此选项假定输入文件中的所有记录都具有相同的长度(即无论为此参数指定的值如何,包含不同长度记录的文件都会返回错误)。

默认值:

TRUE

备注

在加载期间转换数据时 (即使用查询作为 COPY 命令的源),此选项将被忽略。您的数据文件不需要与目标表具有相同的列数和顺序。

REPLACE_INVALID_CHARACTERS = TRUE | FALSE
使用:

仅加载数据

定义:

布尔,指定是否将无效的 UTF-8 字符替换为 Unicode 替换字符 ()。

如果设置为 TRUE,Snowflake 会将无效的 UTF-8 字符替换为 Unicode 替换字符。

如果设置为 FALSE,则加载操作在检测到无效的 UTF-8 字符编码时产生错误。

默认值:

FALSE

EMPTY_FIELD_AS_NULL = TRUE | FALSE
使用:

数据加载、数据卸载和外部表

定义:
  • 加载数据时,指定是否为输入文件中的空字段插入 SQL NULL,空字段由两个连续的分隔符(例如 ,,)表示。

    如果设置为 FALSE,Snowflake 会尝试将空字段转换为相应列类型。空字符串会插入到类型为 STRING 的列中。对于其他列类型, COPY 命令将引发错误。

  • 卸载数据时,此选项与 FIELD_OPTIONALLY_ENCLOSED_BY 结合使用。FIELD_OPTIONALLY_ENCLOSED_BY = NONE 时,设置 EMPTY_FIELD_AS_NULL = FALSE 指定将表中的空字符串卸载为空字符串值,而不用将字段值放在引号内。

    如果设置为 TRUEFIELD_OPTIONALLY_ENCLOSED_BY 必须指定一个字符来包围字符串。

默认值:

TRUE

SKIP_BYTE_ORDER_MARK = TRUE | FALSE
使用:

仅加载数据

定义:

布尔,指定如果数据文件中存在 BOM(字节顺序标记),是否跳过。BOM 是数据文件开头的字符代码,用于定义字节顺序和编码形式。

如果设置为 FALSE,Snowflake 会识别数据文件中的任何 BOM,这可能会导致 BOM 错误或合并到表中的第一列中。

默认值:

TRUE

ENCODING = 'string'
使用:

数据加载和外部表

定义:

字符串(常量),指定将数据加载到表中时源数据的字符集。

字符 集

ENCODING 值

支持的语言

备注

Big5

BIG5

繁体中文

EUC-JP

EUCJP

日语

EUC-KR

EUCKR

韩语

GB18030

GB18030

中文

IBM420

IBM420

阿拉伯语

IBM424

IBM424

希伯来语

IBM949

IBM949

韩语

ISO-2022-CN

ISO2022CN

简体中文

ISO-2022-JP

ISO2022JP

日语

ISO-2022-KR

ISO2022KR

韩语

ISO-8859-1

ISO88591

丹麦语、荷兰语、英语、法语、德语、意大利语、挪威语、葡萄牙语、瑞典语

ISO-8859-2

ISO88592

捷克语、匈牙利语、波兰语、罗马尼亚语

ISO-8859-5

ISO88595

俄语

ISO-8859-6

ISO88596

阿拉伯语

ISO-8859-7

ISO88597

希腊语

ISO-8859-8

ISO88598

希伯来语

ISO-8859-9

ISO88599

土耳其语

ISO-8859-15

ISO885915

丹麦语、荷兰语、英语、法语、德语、意大利语、挪威语、葡萄牙语、瑞典语

与 ISO-8859-1 相同,但 8 个字符除外,包括欧元货币符号。

KOI8-R

KOI8R

俄语

Shift_JIS

SHIFTJIS

日语

UTF-8

UTF8

所有语言

要从分隔文件(CSV、TSV 等)加载数据,默认为 UTF-8。. . 要从所有其他支持的文件格式(JSON、Avro 等)加载数据以及卸载数据,UTF-8 是唯一支持的字符集。

UTF-16

UTF16

所有语言

UTF-16BE

UTF16BE

所有语言

UTF-16LE

UTF16LE

所有语言

UTF-32

UTF32

所有语言

UTF-32BE

UTF32BE

所有语言

UTF-32LE

UTF32LE

所有语言

windows-949

WINDOWS949

韩语

windows-1250

WINDOWS1250

捷克语、匈牙利语、波兰语、罗马尼亚语

windows-1251

WINDOWS1251

俄语

windows-1252

WINDOWS1252

丹麦语、荷兰语、英语、法语、德语、意大利语、挪威语、葡萄牙语、瑞典语

windows-1253

WINDOWS1253

希腊语

windows-1254

WINDOWS1254

土耳其语

windows-1255

WINDOWS1255

希伯来语

windows-1256

WINDOWS1256

阿拉伯语

默认值:

UTF8

备注

Snowflake 将所有数据存储在 UTF-8 字符集中。数据在加载到 Snowflake 之前将转换为 UTF-8。

TYPE = JSON

COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
使用:

数据加载和外部表

定义:
  • 加载数据时,指定数据文件的当前压缩算法。Snowflake 使用此选项来检测 已压缩 的数据文件是如何压缩的,以便提取文件中的压缩数据进行加载。

  • 卸载数据时,使用指定的压缩算法压缩数据文件。

:

支持的值

备注

AUTO

加载数据时,压缩算法会自动检测,但使用 Brotli 的压缩文件除外,目前无法自动检测。卸载数据时,文件会使用默认格式 gzip 自动压缩。

GZIP

BZ2

BROTLI

如果加载/卸载 Brotli 压缩文件,则必须进行指定。

ZSTD

支持 Zstandard v0.8(及更高版本)。

DEFLATE

使用 Deflate 压缩的文件(带有 zlib 标头、RFC1950)。

RAW_DEFLATE

使用 Raw Deflate 压缩的文件(无标头、RFC1951)。

NONE

在加载数据时,表示文件尚未压缩。在卸载数据时,指定卸载的未压缩文件。

默认值:

AUTO

DATE_FORMAT = 'string' | AUTO
使用:

仅加载数据

定义:

定义数据文件中日期字符串值的格式。如果未指定值或值为 AUTO,则使用 DATE_INPUT_FORMAT 参数的值。

此文件格式选项仅适用于以下操作:

  • 使用 MATCH_BY_COLUMN_NAME 复制选项将 JSON 数据加载到单独的列中。

  • 通过在 COPY 语句中指定查询(即 COPY 转换),将 JSON 数据加载到单独的列中。

默认值:

AUTO

TIME_FORMAT = 'string' | AUTO
使用:

仅加载数据

定义:

定义数据文件中时间字符串值的格式。如果未指定值或值为 AUTO,则使用 TIME_INPUT_FORMAT 参数的值。

此文件格式选项仅适用于以下操作:

  • 使用 MATCH_BY_COLUMN_NAME 复制选项将 JSON 数据加载到单独的列中。

  • 通过在 COPY 语句中指定查询(即 COPY 转换),将 JSON 数据加载到单独的列中。

默认值:

AUTO

TIMESTAMP_FORMAT = string' | AUTO
使用:

仅加载数据

定义:

定义数据文件中时间戳字符串值的格式。如果未指定值或值为 AUTO,则使用 TIMESTAMP_INPUT_FORMAT 参数的值。

此文件格式选项仅适用于以下操作:

  • 使用 MATCH_BY_COLUMN_NAME 复制选项将 JSON 数据加载到单独的列中。

  • 通过在 COPY 语句中指定查询(即 COPY 转换),将 JSON 数据加载到单独的列中。

默认值:

AUTO

BINARY_FORMAT = HEX | BASE64 | UTF8
使用:

仅加载数据

定义:

定义数据文件中二进制字符串值的编码格式。将数据加载到表中的二进制列时可以使用该选项。

此文件格式选项仅适用于以下操作:

  • 使用 MATCH_BY_COLUMN_NAME 复制选项将 JSON 数据加载到单独的列中。

  • 通过在 COPY 语句中指定查询(即 COPY 转换),将 JSON 数据加载到单独的列中。

默认值:

HEX

TRIM_SPACE = TRUE | FALSE
使用:

仅加载数据

定义:

布尔,指定是否从字符串中移除前导和尾随空格。

例如,如果您的外部数据库软件将字段放在引号中,但插入了前导空格,则 Snowflake 会读取前导空格而不是左引号字符作为字段的开头(即引号被解释为字段数据字符串的一部分)。可将选项设置为 TRUE,在数据加载期间移除不需要的空格。

仅当使用 MATCH_BY_COLUMN_NAME 复制选项将 JSON 数据加载到单独的列中时,此文件格式选项才应用于以下操作。

默认值:

FALSE

NULL_IF = ( 'string1' [ , 'string2' , ... ] )
使用:

仅加载数据

定义:

用于与 SQL NULL 相互转换的字符串。Snowflake 会将数据加载源中的这些字符串替换为 SQL NULL。若要指定多个字符串,请将字符串列表放在括号中,并使用逗号分隔每个值。

仅当使用 MATCH_BY_COLUMN_NAME 复制选项将 JSON 数据加载到单独的列中时,此文件格式选项才应用于以下操作。

请注意,无论数据类型如何,Snowflake 都会将该值的所有实例转换为 NULL。例如,如果 2 指定为值,则转换为字符串或数字的所有 2 实例。

例如:

NULL_IF = ('\N', 'NULL', 'NUL', '')

请注意,此选项可以包含空字符串。

默认值:

\\N``(即 NULL,假设 :code:`ESCAPE_UNENCLOSED_FIELD` 值为 ``\\

FILE_EXTENSION = 'string' | NONE
使用:

仅数据卸载

定义:

指定卸载到暂存区的文件的扩展名。接受任何扩展名。用户负责指定可由任何所需软件或服务读取的文件扩展名。

默认值:

null 表示文件扩展名由格式类型 .json[compression] 确定,其中 compression 是由压缩方法添加的扩展名(如果已设置 COMPRESSION)。

ENABLE_OCTAL = TRUE | FALSE
使用:

仅加载数据

定义:

布尔,支持解析八进制数。

默认值:

FALSE

ALLOW_DUPLICATE = TRUE | FALSE
使用:

数据加载和外部表

定义:

布尔,指定允许重复对象字段名称(仅保留最后一个)。

默认值:

FALSE

STRIP_OUTER_ARRAY = TRUE | FALSE
使用:

数据加载和外部表

定义:

布尔,指示 JSON 解析器移除外括号(即 [ ])。

默认值:

FALSE

STRIP_NULL_VALUES = TRUE | FALSE
使用:

数据加载和外部表

定义:

布尔,指示 JSON 解析器移除包含 null 值的对象字段或数组元素。例如,当设置为 TRUE 时,会发生以下变化:

之前

之后

[null]

[]

[null,null,3]

[,,3]

{"a":null,"b":null,"c":123}

{"c":123}

{"a":[1,null,2],"b":{"x":null,"y":88}}

{"a":[1,,2],"b":{"y":88}}

默认值:

FALSE

REPLACE_INVALID_CHARACTERS = TRUE | FALSE
使用:

数据加载和外部表

定义:

布尔,指定是否将无效的 UTF-8 字符替换为 Unicode 替换字符 ()。此选项执行一对一的字符替换。

:

如果设置为 TRUE,Snowflake 会将无效的 UTF-8 字符替换为 Unicode 替换字符。

如果设置为 FALSE,则加载操作在检测到无效的 UTF-8 字符编码时产生错误。

默认值:

FALSE

IGNORE_UTF8_ERRORS = TRUE | FALSE
使用:

数据加载和外部表

定义:

布尔,指定 UTF-8 编码错误是否产生错误条件。它是 REPLACE_INVALID_CHARACTERS 的替代语法。

:

如果设置为 TRUE,则任何无效 UTF-8 的序列都将以静默方式替换为 Unicode 字符 ``U+FFFD``(即“替换字符”)。

如果设置为 FALSE,则加载操作在检测到无效的 UTF-8 字符编码时产生错误。

默认值:

FALSE

SKIP_BYTE_ORDER_MARK = TRUE | FALSE
使用:

仅加载数据

定义:

布尔,指定如果数据文件中存在 BOM(字节顺序标记),是否跳过。BOM 是数据文件开头的字符代码,用于定义字节顺序和编码形式。

如果设置为 FALSE,Snowflake 会识别数据文件中的任何 BOM,这可能会导致 BOM 错误或合并到表中的第一列中。

默认值:

TRUE

TYPE = AVRO

COMPRESSION = AUTO | GZIP | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
使用:

仅加载数据

定义:
  • 加载数据时,指定数据文件的当前压缩算法。Snowflake 使用此选项来检测 已压缩 的数据文件是如何压缩的,以便提取文件中的压缩数据进行加载。

  • 卸载数据时,使用指定的压缩算法压缩数据文件。

:

支持的值

备注

AUTO

加载数据时,压缩算法会自动检测,但使用 Brotli 的压缩文件除外,目前无法自动检测。卸载数据时,文件会使用默认格式 gzip 自动压缩。

GZIP

BROTLI

如果加载/卸载 Brotli 压缩文件,则必须进行指定。

ZSTD

支持 Zstandard v0.8(及更高版本)。

DEFLATE

使用 Deflate 压缩的文件(带有 zlib 标头、RFC1950)。

RAW_DEFLATE

使用 Raw Deflate 压缩的文件(无标头、RFC1951)。

NONE

在加载数据时,表示文件尚未压缩。在卸载数据时,指定卸载的未压缩文件。

默认值:

AUTO

备注

我们建议您使用默认 AUTO 选项,因为它将确定文件和编解码器压缩。指定压缩选项是指对文件进行压缩,而不是对块(编解码器)进行压缩。

TRIM_SPACE = TRUE | FALSE
使用:

仅加载数据

定义:

布尔,指定是否从字符串中移除前导和尾随空格。

例如,如果您的外部数据库软件将字段放在引号中,但插入了前导空格,则 Snowflake 会读取前导空格而不是左引号字符作为字段的开头(即引号被解释为字段数据字符串的一部分)。可将选项设置为 TRUE,在数据加载期间移除不需要的空格。

仅当使用 MATCH_BY_COLUMN_NAME 复制选项将 Avro 数据加载到单独的列中时,此文件格式选项才应用于以下操作。

默认值:

FALSE

REPLACE_INVALID_CHARACTERS = TRUE | FALSE
使用:

数据加载和外部表

定义:

布尔,指定是否将无效的 UTF-8 字符替换为 Unicode 替换字符 ()。此选项执行一对一的字符替换。

:

如果设置为 TRUE,Snowflake 会将无效的 UTF-8 字符替换为 Unicode 替换字符。

如果设置为 FALSE,则加载操作在检测到无效的 UTF-8 字符编码时产生错误。

默认值:

FALSE

NULL_IF = ( 'string1' [ , 'string2' , ... ] )
使用:

仅加载数据

定义:

用于与 SQL NULL 相互转换的字符串。Snowflake 会将数据加载源中的这些字符串替换为 SQL NULL。若要指定多个字符串,请将字符串列表放在括号中,并使用逗号分隔每个值。

仅当使用 MATCH_BY_COLUMN_NAME 复制选项将 Avro 数据加载到单独的列中时,此文件格式选项才应用于以下操作。

请注意,无论数据类型如何,Snowflake 都会将该值的所有实例转换为 NULL。例如,如果 2 指定为值,则转换为字符串或数字的所有 2 实例。

例如:

NULL_IF = ('\N', 'NULL', 'NUL', '')

请注意,此选项可以包含空字符串。

默认值:

\\N``(即 NULL,假设 :code:`ESCAPE_UNENCLOSED_FIELD` 值为 ``\\

TYPE = ORC

TRIM_SPACE = TRUE | FALSE
使用:

数据加载和外部表

定义:

布尔,指定是否从字符串中移除前导和尾随空格。

例如,如果您的外部数据库软件将字段放在引号中,但插入了前导空格,则 Snowflake 会读取前导空格而不是左引号字符作为字段的开头(即引号被解释为字段数据字符串的一部分)。可将选项设置为 TRUE,在数据加载期间移除不需要的空格。

仅当使用 MATCH_BY_COLUMN_NAME 复制选项将 Orc 数据加载到单独的列中时,此文件格式选项才应用于以下操作。

默认值:

FALSE

REPLACE_INVALID_CHARACTERS = TRUE | FALSE
使用:

数据加载和外部表

定义:

布尔,指定是否将无效的 UTF-8 字符替换为 Unicode 替换字符 ()。此选项执行一对一的字符替换。

:

如果设置为 TRUE,Snowflake 会将无效的 UTF-8 字符替换为 Unicode 替换字符。

如果设置为 FALSE,则加载操作在检测到无效的 UTF-8 字符编码时产生错误。

默认值:

FALSE

NULL_IF = ( 'string1' [ , 'string2' , ... ] )
使用:

数据加载和外部表

定义:

用于与 SQL NULL 相互转换的字符串。Snowflake 会将数据加载源中的这些字符串替换为 SQL NULL。若要指定多个字符串,请将字符串列表放在括号中,并使用逗号分隔每个值。

仅当使用 MATCH_BY_COLUMN_NAME 复制选项将 Orc 数据加载到单独的列中时,此文件格式选项才应用于以下操作。

请注意,无论数据类型如何,Snowflake 都会将该值的所有实例转换为 NULL。例如,如果 2 指定为值,则转换为字符串或数字的所有 2 实例。

例如:

NULL_IF = ('\N', 'NULL', 'NUL', '')

请注意,此选项可以包含空字符串。

默认值:

\\N``(即 NULL,假设 :code:`ESCAPE_UNENCLOSED_FIELD` 值为 ``\\

TYPE = PARQUET

COMPRESSION = AUTO | LZO | SNAPPY | NONE
使用:

数据加载、数据卸载和外部表

定义:

  • 加载数据时,指定 Parquet 文件中列的当前压缩算法。

  • 卸载数据时,使用指定的压缩算法压缩数据文件。

:

支持的值

备注

AUTO

加载数据时,会自动检测压缩算法。支持以下压缩算法:Brotli、gzip、Lempel-Ziv-Oberhumer (LZO)、LZ4、Snappy 或 Zstandard v0.8(及更高版本)。. 卸载数据时,默认情况下使用 Snappy (https://google.github.io/snappy/) 压缩算法压缩卸载的文件。

LZO

卸载数据时,默认情况下使用 Snappy 算法压缩文件。如果将数据卸载到 LZO 压缩文件,请指定此值。

SNAPPY

卸载数据时,默认情况下使用 Snappy 算法压缩文件。您可以选择指定此值。

NONE

在加载数据时,表示文件尚未压缩。在卸载数据时,指定卸载的未压缩文件。

默认值:

AUTO

SNAPPY_COMPRESSION = TRUE | FALSE
使用:

仅数据卸载

支持的值

备注

AUTO

对于卸载的文件,默认情况下使用 Snappy (https://google.github.io/snappy/) 压缩算法进行压缩。

SNAPPY

如果卸载 Snappy 压缩文件,则可以指定。

NONE

在加载数据时,表示文件尚未压缩。在卸载数据时,指定卸载的未压缩文件。

定义:

布尔,指定是否使用 SNAPPY 算法压缩卸载文件。

备注

已弃用。`请改用 :samp:`COMPRESSION = SNAPPY

限制:

仅支持数据卸载操作。

默认值:

TRUE

BINARY_AS_TEXT = TRUE | FALSE
使用:

数据加载和外部表

定义:

布尔,指定是否将未定义逻辑数据类型的列解释为 UTF-8 文本。当设置为 FALSE 时,Snowflake 会将这些列解释为二进制数据。

默认值:

TRUE

备注

Snowflake 建议您将 BINARY_AS_TEXT 设置为 FALSE 以避免任何潜在的转换问题。

TRIM_SPACE = TRUE | FALSE
使用:

仅加载数据

定义:

布尔,指定是否从字符串中移除前导和尾随空格。

例如,如果您的外部数据库软件将字段放在引号中,但插入了前导空格,则 Snowflake 会读取前导空格而不是左引号字符作为字段的开头(即引号被解释为字段数据字符串的一部分)。可将选项设置为 TRUE,在数据加载期间移除不需要的空格。

仅当使用 MATCH_BY_COLUMN_NAME 复制选项将 Parquet 数据加载到单独的列中时,此文件格式选项才应用于以下操作。

默认值:

FALSE

USE_LOGICAL_TYPE = TRUE | FALSE
使用:

数据加载、暂存文件中的数据查询和架构检测。

定义:

布尔,指定是否使用 Parquet 逻辑类型。使用此文件格式选项,Snowflake 可以在数据加载期间解释 Parquet 逻辑类型。有关更多信息,请参阅 Parquet 逻辑类型定义 (https://github.com/apache/parquet-format/blob/master/LogicalTypes.md)。创建新文件格式选项时,若要启用 Parquet 逻辑类型,请将 USE_LOGICAL_TYPE 设置为 TRUE。

限制:

不支持数据卸载。

REPLACE_INVALID_CHARACTERS = TRUE | FALSE
使用:

数据加载和外部表

定义:

布尔,指定是否将无效的 UTF-8 字符替换为 Unicode 替换字符 ()。此选项执行一对一的字符替换。

:

如果设置为 TRUE,Snowflake 会将无效的 UTF-8 字符替换为 Unicode 替换字符。

如果设置为 FALSE,则加载操作在检测到无效的 UTF-8 字符编码时产生错误。

默认值:

FALSE

NULL_IF = ( 'string1' [ , 'string2' , ... ] )
使用:

仅加载数据

定义:

用于与 SQL NULL 相互转换的字符串。Snowflake 会将数据加载源中的这些字符串替换为 SQL NULL。若要指定多个字符串,请将字符串列表放在括号中,并使用逗号分隔每个值。

仅当使用 MATCH_BY_COLUMN_NAME 复制选项将 Parquet 数据加载到单独的列中时,此文件格式选项才应用于以下操作。

请注意,无论数据类型如何,Snowflake 都会将该值的所有实例转换为 NULL。例如,如果 2 指定为值,则转换为字符串或数字的所有 2 实例。

例如:

NULL_IF = ('\N', 'NULL', 'NUL', '')

请注意,此选项可以包含空字符串。

默认值:

\\N``(即 NULL,假设 :code:`ESCAPE_UNENCLOSED_FIELD` 值为 ``\\

TYPE = XML

COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
使用:

仅加载数据

定义:
  • 加载数据时,指定数据文件的当前压缩算法。Snowflake 使用此选项来检测 已压缩 的数据文件是如何压缩的,以便提取文件中的压缩数据进行加载。

  • 卸载数据时,使用指定的压缩算法压缩数据文件。

:

支持的值

备注

AUTO

加载数据时,压缩算法会自动检测,但使用 Brotli 的压缩文件除外,目前无法自动检测。卸载数据时,文件会使用默认格式 gzip 自动压缩。

GZIP

BZ2

BROTLI

如果加载/卸载 Brotli 压缩文件,则必须进行指定。

ZSTD

支持 Zstandard v0.8(及更高版本)。

DEFLATE

使用 Deflate 压缩的文件(带有 zlib 标头、RFC1950)。

RAW_DEFLATE

使用 Raw Deflate 压缩的文件(无标头、RFC1951)。

NONE

在加载数据时,表示文件尚未压缩。在卸载数据时,指定卸载的未压缩文件。

默认值:

AUTO

IGNORE_UTF8_ERRORS = TRUE | FALSE
使用:

数据加载和外部表

定义:

布尔,指定 UTF-8 编码错误是否产生错误条件。它是 REPLACE_INVALID_CHARACTERS 的替代语法。

:

如果设置为 TRUE,则任何无效 UTF-8 的序列都将以静默方式替换为 Unicode 字符 ``U+FFFD``(即“替换字符”)。

如果设置为 FALSE,则加载操作在检测到无效的 UTF-8 字符编码时产生错误。

默认值:

FALSE

PRESERVE_SPACE = TRUE | FALSE
使用:

仅加载数据

定义:

布尔,指定 XML 分析器是否在元素内容中保留前导空格和尾随空格。

默认值:

FALSE

STRIP_OUTER_ELEMENT = TRUE | FALSE
使用:

仅加载数据

定义:

布尔,指定 XML 解析器是否剥离外部 XML 元素,将第 2 级元素公开为单独的文档。

默认值:

FALSE

DISABLE_SNOWFLAKE_DATA = TRUE | FALSE
使用:

仅加载数据

定义:

布尔,指定 XML 分析器是否禁用对 Snowflake 半结构化数据标记的识别。

默认值:

FALSE

DISABLE_AUTO_CONVERT = TRUE | FALSE
使用:

仅加载数据

定义:

布尔,指定 XML 分析器是否禁用数值和布尔值从文本到原生表示形式的自动转换。

默认值:

FALSE

REPLACE_INVALID_CHARACTERS = TRUE | FALSE
使用:

数据加载和外部表

定义:

布尔,指定是否将无效的 UTF-8 字符替换为 Unicode 替换字符 ()。此选项执行一对一的字符替换。

:

如果设置为 TRUE,Snowflake 会将无效的 UTF-8 字符替换为 Unicode 替换字符。

如果设置为 FALSE,则加载操作在检测到无效的 UTF-8 字符编码时产生错误。

默认值:

FALSE

SKIP_BYTE_ORDER_MARK = TRUE | FALSE
使用:

仅加载数据

定义:

布尔,指定是否跳过输入文件中存在的任何 BOM(字节顺序标记)。BOM 是数据文件开头的字符代码,用于定义字节顺序和编码形式。

如果设置为 FALSE,Snowflake 会识别数据文件中的任何 BOM,这可能会导致 BOM 错误或合并到表中的第一列中。

默认值:

TRUE

使用说明

  • ALTER FILE FORMAT 不支持以下操作:

    • 更改文件格式的类型(CSV、JSON 等)。

    • 取消设置任何格式选项(即,将选项重置为该类型的默认值)。

    • 取消设置(即移除)评论。

    要进行任何此类更改,都必须重新创建文件格式。

示例

将文件格式 my_format 重命名为 my_new_format

ALTER FILE FORMAT IF EXISTS my_format RENAME TO my_new_format;
Copy

将逗号 (,) 指定为 my_format 的字段分隔符(在 CREATE FILE FORMAT 示例中创建):

ALTER FILE FORMAT my_format SET FIELD_DELIMITER=',';
Copy
语言: 中文