SnowConvert AI - Redshift - Data types¶
Current Data types conversion for Redshift in SnowConvert AI.
Snowflake 支持最基本的 SQL 数据类型(存在部分限制),用于列、局部变量、表达式、参数和任何其他适当/合适的位置。
数值数据类型 ¶
Redshift |
Snowflake |
备注 |
|---|---|---|
INT |
INT |
Snowflake 的 INT 是 NUMBER 的别名。 |
INT2 |
SMALLINT |
Snowflake 的 INT2 是 NUMBER 的别名。 |
INT4 |
INTEGER |
Snowflake 的 INT4 是 NUMBER 的别名。 |
INT8 |
INTEGER |
Snowflake 的 INT8 是 NUMBER 的别名。 |
INTEGER |
INTEGER |
Snowflake 的 INTEGER 是 NUMBER 的别名。 |
BIGINT |
BIGINT |
Snowflake 的 BIGINT 是 NUMBER 的别名。 |
DECIMAL |
DECIMAL |
Snowflake 的 DECIMAL 是 NUMBER 的别名。 |
DOUBLE PRECISION |
DOUBLE PRECISION |
Snowflake 的 DOUBLE PRECISION 是 FLOAT 的别名。 |
NUMERIC |
NUMERIC |
Snowflake 的 NUMERIC 是 NUMBER 的别名。 |
SMALLINT |
SMALLINT |
Snowflake 的 SMALLINT 是 NUMBER 的别名。 |
FLOAT |
FLOAT |
Snowflake 使用双精度(64 位)IEEE 754 浮点数。 |
FLOAT4 |
FLOAT4 |
Snowflake 的 FLOAT4 是 FLOAT 的别名。 |
FLOAT8 |
FLOAT8 |
Snowflake 的 FLOAT8 是 FLOAT 的别名。 |
REAL |
REAL |
Snowflake 的 REAL 是 FLOAT 的别名。 |
字符类型 ¶
Redshift |
Snowflake |
备注 |
|---|---|---|
VARCHAR |
VARCHAR |
VARCHAR 存储 Unicode UTF-8 字符。如果未指定长度,则默认值为允许的最大长度 (16,777,216)。 |
CHAR |
CHAR |
Snowflake 的 CHAR 是 VARCHAR 的别名。 |
CHARACTER |
CHARACTER |
Snowflake 的 CHARACTER 是 VARCHAR 的别名。 |
NCHAR |
NCHAR |
Snowflake 的 NCHAR 是 VARCHAR 的别名。 |
BPCHAR |
VARCHAR |
Snowflake 不支持 BPCHAR 数据类型。改用 VARCHAR。如需了解更多信息,请参阅 SSC-FDM-PG0002。 |
NVARCHAR |
NVARCHAR |
Snowflake 的 NVARCHAR 是 VARCHAR 的别名。 |
CHARACTER VARYING |
CHARACTER VARYING |
Snowflake 的 CHARACTER VARYING 是 VARCHAR 的别名。 |
NATIONAL CHARACTER |
NCHAR |
Snowflake 的 NCHAR 是 VARCHAR 的别名。 |
NATIONAL CHARACTER VARYING |
NCHAR VARYING |
Snowflake 的 NCHAR VARYING 是 VARCHAR 的别名。 |
TEXT |
TEXT |
Snowflake 的 TEXT 是 VARCHAR 的别名。 |
NAME (https://www.postgresql.org/docs/current/datatype-character.html)(特殊字符类型) |
VARCHAR |
VARCHAR 存储 Unicode UTF-8 字符。如果未指定长度,则默认值为允许的最大长度 (16,777,216)。 |
备注
当 Redshift 数据类型中存在 MAX 精度实参时,它们将被转换为 Snowflake 支持的默认最大精度。
布尔类型 ¶
Redshift |
Snowflake |
备注 |
|---|---|---|
BOOL |
BOOLEAN |
|
BOOLEAN |
BOOLEAN |
二进制数据类型 ¶
Redshift |
Snowflake |
备注 |
|---|---|---|
VARBYTE |
VARBINARY |
VARBINARY 是 BINARY 的同义词。 |
VARBINARY |
VARBINARY |
VARBINARY 是 BINARY 的同义词。 |
BINARY |
BINARY |
最大长度为 8 MB(8,388,608 字节) |
BINARY VARYING |
BINARY VARYING |
BINARY VARYING 是 BINARY 的同义词。 |
警告
在 Redshift 中,二进制类型的最大长度为 16 MB(16,777,216 字节),但在 Snowflake 中,二进制类型的最大长度为 8 MB(8,388,608 字节)。请留意在最大长度上的减少。
日期和时间数据类型 ¶
Redshift |
Snowflake |
备注 |
|---|---|---|
DATE |
DATE |
DATE accepts dates in the most common forms (such as |
TIME |
TIME |
以 |
TIMETZ |
TIME |
时间数据类型不支持时区。如需了解更多信息,请参阅 SSC-FDM-0005。 |
TIME WITH TIME ZONE |
TIME |
时间数据类型不支持时区。如需了解更多信息,请参阅 SSC-FDM-0005。 |
TIME WITHOUT TIME ZONE |
TIME |
Snowflake 支持以 |
TIMESTAMP |
TIMESTAMP |
时间戳精度的范围为 0(秒)到 9(纳秒)。 |
TIMESTAMPTZ |
TIMESTAMP_TZ |
TIMESTAMP_TZ 在内部存储 UTC 时间及关联的 时区偏移。 |
TIMESTAMP WITH TIME ZONE |
TIMESTAMP_TZ |
TIMESTAMP_TZ 在内部存储 UTC 时间及关联的 时区偏移。 |
TIMESTAMP WITHOUT TIME ZONE |
TIMESTAMP_NTZ |
TIMESTAMP_NTZ 在内部存储具有指定精度的“挂钟”时间。 |
INTERVAL YEAR TO MONTH |
VARCHAR |
The interval data type is not supported by Snowflake. Transformed to VARCHAR. With the |
INTERVAL DAY TO SECOND |
VARCHAR |
The interval data type is not supported by Snowflake. Transformed to VARCHAR. With the |
其他数据类型 ¶
Redshift |
Snowflake |
备注 |
|---|---|---|
GEOMETRY |
GEOMETRY |
坐标表示为实数对 (x, y)。目前,仅支持 2D 坐标。 |
GEOGRAPHY |
GEOGRAPHY |
GEOGRAPHY 数据类型遵循 WGS 84 标准。 |
HLLSKETCH |
不适用 |
Snowflake 不支持的数据类型。如需了解更多信息,请参阅 SSC-EWI-RS0004。 |
SUPER |
VARIANT |
可以包含其他任何数据类型的值,包括 OBJECT 和 ARRAY 值。 |
INTERVAL DAY TO SECOND 数据类型¶
描述¶
INTERVAL DAY TO SECOND 指定间隔字面量,以定义以天、小时、分钟和秒为单位的持续时间。(RedShift SQL 语言参考“Interval 数据类型” (https://docs.aws.amazon.com/redshift/latest/dg/r_interval_data_types.html#r_interval_data_types-syntax))
By default, there is no equivalent for this data type in Snowflake and it is transformed to VARCHAR.
备注
Preview Feature: When the --UseIntervalDatatype preview flag is enabled, Redshift INTERVAL columns are preserved as native Snowflake INTERVAL types. See the Interval Data Types translation reference for complete transformation details.
语法 ¶
警告
计划在未来的更新中实现 Interval 数据类型的使用。
示例源模式¶
Create Table 中的 Interval Day to Second¶
输入¶
Redshift¶
输出¶
Snowflake¶
The Interval value is transformed to a supported Snowflake format and then inserted as text inside the column. Since Snowflake does not support Interval as a data type, it is only supported in arithmetic operations. To use the value, it needs to be extracted and used as an Interval constant (if possible).
Original Redshift value: INTERVAL '1 2:3:4.567' DAY TO SECOND
存储在 Snowflake 列中的值: '1days, 2hours, 3mins, 4secs, 56ms'
作为 Snowflake Interval 常量的值: INTERVAL '1days, 2hours, 3mins, 4secs, 56ms'
从“Interval Day to Second”列检索数据¶
输入¶
Redshift¶
Result¶
interval_day_col1 |
interval_day_col2 |
|---|---|
1 days 2 hours 0 mins 0.0 secs |
NULL |
NULL |
1 days 2 hours 3 mins 4.56 secs |
输出¶
Snowflake¶
Result¶
interval_day_col1 |
interval_day_col2 |
|---|---|
1d, 2h |
NULL |
NULL |
1d, 2h, 3m, 4s, 56ms |
已知问题¶
1.仅支持算术运算¶
Snowflake Interval 存在几项限制。仅支持 DATE 或 TIMESTAMP 与 Interval 常量 之间的算术运算,不支持其他任何场景。
相关的 EWIs¶
SSC-EWI-0036:数据类型转换为另一种数据类型。
INTERVAL YEAR TO MONTH 数据类型¶
描述¶
INTERVAL YEAR TO MONTH 指定 interval 数据类型,以存储以年和月为单位的持续时间。(RedShift SQL 语言参考“Interval 数据类型” (https://docs.aws.amazon.com/redshift/latest/dg/r_interval_data_types.html#r_interval_data_types-syntax))
在 Snowflake 中没有该数据类型的等效项,它目前转换为 VARCHAR。
语法 ¶
警告
计划在未来的更新中实现 Interval 数据类型的使用。
示例源模式¶
Create Table 中的 Interval Year To Month¶
输入:¶
Redshift¶
输出¶
Snowflake¶
The Interval value is transformed to a supported Snowflake format and then inserted as text inside the column. Since Snowflake does not support Interval as a data type, it is only supported in arithmetic operations. To use the value, it needs to be extracted and used as an Interval constant (if possible).
原始 Redshift 值: INTERVAL '1-2' YEAR TO MONTH
存储在 Snowflake 列中的值: '1y, 2m'
作为 Snowflake Interval 常量的值: INTERVAL '1y, 2m'
从“Interval Year To Month”列检索数据¶
输入¶
Redshift¶
Result¶
interval_year_col1 |
interval_year_col2 |
interval_year_col2 |
|---|---|---|
12 years 0 mons |
NULL |
NULL |
NULL |
0 years 5 mons |
NULL |
NULL |
NULL |
1000 years 11 mons |
输出¶
Snowflake¶
Result¶
interval_year_col1 |
interval_year_col2 |
interval_year_col2 |
|---|---|---|
12 y 0 mm |
NULL |
NULL |
NULL |
0 y 5 mm |
NULL |
NULL |
NULL |
1000 y 11 mons |
已知问题¶
1.仅支持算术运算¶
Snowflake Interval 存在几项限制。仅支持 DATE 或 TIMESTAMP 与 Interval 常量 之间的算术运算,不支持其他任何场景。
相关的 EWIs¶
SSC-EWI-0036:数据类型转换为另一种数据类型。
数字格式模型¶
描述¶
这些是 Redshift (https://docs.aws.amazon.com/redshift/latest/dg/r_Numeric_formating.html) 支持的不同数字格式,及其在 Snowflake 中的等效项。
Redshift |
Snowflake |
注释 |
|---|---|---|
0 |
0 |
|
9 |
9 |
|
.(句点)、D |
.(句点)、D |
|
,(逗号) |
,(逗号) |
|
CC |
目前,Snowflake 中没有 Century Code 的等效项。 |
|
FM |
FM |
|
PR |
目前,Snowflake 中没有此格式的等效格式。 |
|
S |
S |
显式数字符号。 |
L |
$ |
货币符号占位符。 |
G |
G |
|
MI |
MI |
减号(表示负数) |
PL |
S |
目前,Snowflake 中没有加号的等效符号。因此,它会被转换为显式数字符号。 |
SG |
S |
在指定位置使用显式数字符号。 |
RN |
目前,Snowflake 中没有罗马数字的等效项。 |
|
TH |
目前,Snowflake 中没有 Ordinal 后缀的等效项 |
示例源模式¶
在 To_Number 函数中的使用¶
输入:¶
Redshift¶
Results¶
| multiple_nines | exact_zeros | decimals | fill_mode | currency |
|---|---|---|---|---|
| 9423 | 9423 | 123.456 | 123031.30 | 1254.88 |
输出¶
Snowflake¶
Results¶
| multiple_nines | exact_zeros | decimals | fill_mode | currency |
|---|---|---|---|---|
| 9423 | 9423 | 123.456 | 123031.300 | 12454.88 |
输入:¶
Redshift¶
Results¶
| currency_L | signed_number_end | plus_sign | minus_sign | signed_number |
|---|---|---|---|---|
| 12454.8 | -123 | 1254.88 | -12454.88 | -12454.88 |
输出:¶
Snowflake¶
Results¶
| currency_L | signed_number_end | plus_sign | minus_sign | signed_number |
|---|---|---|---|---|
| 12454.8 | -123 | 1254.88 | -12454.88 | -12454.88 |
在 To_Char 函数中的使用¶
输入:¶
Redshift¶
Results¶
| signed_number | decimal_number | negative | minus_sign | plus_sign | multiple_ninesmultiple_nines | exact_zerosexact_zeros |
|---|---|---|---|---|---|---|
| '123-' | '12,454.88' | '-12,454.88' | '12454.88' | '-12,454.88' | '09423' | '09423' |
输出:¶
Snowflake¶
Results¶
| signed_number | decimal_number | negative | minus_sign | plus_sign | multiple_ninesmultiple_nines | exact_zerosexact_zeros |
|---|---|---|---|---|---|---|
| '123-' | '12,454.88' | '-12,454.88' | '12454.88' | '-12,454.88' | '09423' | '09423' |
不支持的格式¶
不支持以下格式,为此将使用 EWI 对其进行标记。
输入:¶
输出:¶
已知问题¶
1. Using numeric signs inside the number not supported.¶
Snowflake 不支持在数字中间(而非数字开头或结尾)使用任何数字符号格式(MI、SG 或 PL)。
示例
相关的 EWIs¶
SSC-EWI-0006: The current date/numeric format may have a different behavior in Snowflake.