雪花中的排序规则

问题描述 投票:0回答:1

我们创建了一个如图所示的雪花表,并使用复制到命令将数据从平面文件加载到其中

create or replace table temp.T_ERROR
(
    ID NUMBER(38,0) Primary Key,
    ERROR varchar(4) collate 'en-rtrim' NOT NULL,
)

所以我们在ERROR中看到了rtrimmed值,然后我们尝试将这些结果传输到另一个雪花表中,该表上未设置归类选项

create or replace table DATA.T_ERROR_1
(
    ID NUMBER(38,0) Primary Key,
    ERROR varchar(4) NOT NULL,
)

问题DATA.T_ERROR_1表没有从临时表中获取修剪后的值,而是从原始平面文件中获取了未修剪的值]

还有其他方法可以执行此转移,而这不涉及我编写rtrim ltrim或trim或每一列

我们如图所示创建了一个雪花表,并使用copy into命令创建或替换了表temp.T_ERROR(ID NUMBER(38,0)主键,ERROR varchar(4)... >

您表中的

[[无

已修剪数据。在某些情况下仅如此显示

temp.T_ERROR具有修剪后的比较语义] >>,这意味着它比较并排序好像已修剪。但是分配不是比较,并且temp.T_ERROR中的原始值(已填充空格)被复制到新表DATA.T_ERROR_1中。您可以使用[检查空格是否存在

SELECT '"'||ERROR||'"', LENGTH(ERROR) FROM temp.T_ERROR

[正如Mike Walton在其他地方所说,如果您有机会在数据进入Snowflake之前修剪空间,则可能会解决您的问题。但是,如果要移植的应用程序非常依赖CHAR行为,则可能最好为所有COLLATE列定义CHAR

我已经在其他数据库(即Oracle)上进行了测试,它的行为与Snowflake相同:如果从CHAR复制到VARCHAR,也会获得填充空间。

sql ssis collation snowflake-datawarehouse snowflake-schema
1个回答
0
投票
您表中的

[[无

© www.soinside.com 2019 - 2024. All rights reserved.