Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 雪花校勘_Sql_Ssis_Collation_Snowflake Cloud Data Platform_Snowflake Schema - Fatal编程技术网

Sql 雪花校勘

Sql 雪花校勘,sql,ssis,collation,snowflake-cloud-data-platform,snowflake-schema,Sql,Ssis,Collation,Snowflake Cloud Data Platform,Snowflake Schema,我们创建了如图所示的雪花表,并使用copy into命令将数据加载到平面文件中 创建或替换表temp.T\u错误 ( ID号(38,0)主键, 错误varchar(4)collate'en rtrim'不为空, ) 因此,我们看到rtrimmed值出错,然后我们尝试将这些结果传输到另一个雪花表中,该表上没有设置collate选项 创建或替换表数据。T\u错误\u 1 ( ID号(38,0)主键, 错误varchar(4)不为空, ) 问题: DATA.T_ERROR_1表未从临时表获取修剪值

我们创建了如图所示的雪花表,并使用copy into命令将数据加载到平面文件中

创建或替换表temp.T\u错误
(
ID号(38,0)主键,
错误varchar(4)collate'en rtrim'不为空,
)
因此,我们看到rtrimmed值出错,然后我们尝试将这些结果传输到另一个雪花表中,该表上没有设置collate选项

创建或替换表数据。T\u错误\u 1
(
ID号(38,0)主键,
错误varchar(4)不为空,
)
问题
DATA.T_ERROR_1
表未从临时表获取修剪值,而是获取原始平面文件中的未修剪值

是否有其他方法可以完成此传输,而不需要我编写rtrim ltrim或trim,或者您的表中的每一列都没有经过修剪的数据。只有在某些情况下才会出现这种情况

temp.T_ERROR
具有修剪的比较语义,这意味着它会像修剪一样进行比较和排序。但是赋值不是比较,并且
temp.T\u ERROR
中的原始值(用空格填充)被复制到新表
DATA.T\u ERROR\u 1
中。你可以用eg检查空格是否存在

SELECT '"'||ERROR||'"', LENGTH(ERROR) FROM temp.T_ERROR
正如其他地方所说,如果您有机会在数据进入雪花之前修剪空间,您的问题可能会得到解决。但是,如果您正在移植一个严重依赖
CHAR
行为的应用程序,那么最好为所有
CHAR
列定义
COLLATE


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

您是否考虑过在不进行任何编码的情况下定义原始表,然后更改如何从平面文件将数据加载到该表中的选项?COPY INTO语句中有一些选项可以帮助您解决这个问题。主要是,我认为如果您可以在不使用引号文本限定符的情况下将数据放入数据库,那么雪花将自动为您修剪。