[[无
我们创建了一个如图所示的雪花表,并使用复制到命令将数据从平面文件加载到其中
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
,也会获得填充空间。
[[无