Amazon s3 从S3 csv文件复制到雪花表时处理空字符串

Amazon s3 从S3 csv文件复制到雪花表时处理空字符串,amazon-s3,snowflake-cloud-data-platform,Amazon S3,Snowflake Cloud Data Platform,我正在尝试从S3路径加载csv文件。我面临以下错误 1未捕获错误:无法识别数值。 此错误是由于NULL值试图作为字符串加载到数值列中。我找到了解决方案,并在下面实施: create or replace file format test type = 'CSV' skip_header = 1 FIELD_OPTIONALLY_ENCLOSED_BY = '"' NULL_IF=(''); 注意:它工作得很好。能够将源数据存储为空 2未捕获错误:NULL导致列不可为NULL 我们在源列中有一个

我正在尝试从S3路径加载csv文件。我面临以下错误

1未捕获错误:无法识别数值。 此错误是由于NULL值试图作为字符串加载到数值列中。我找到了解决方案,并在下面实施:

create or replace file format test
type = 'CSV'
skip_header = 1 FIELD_OPTIONALLY_ENCLOSED_BY = '"'
NULL_IF=('');
注意:它工作得很好。能够将源数据存储为空

2未捕获错误:NULL导致列不可为NULL 我们在源列中有一个非空的字符串。在将空字符串加载到snowflake时,它正在转换为NULL并尝试加载,因为它在snowflake中是一个NOTNULL列,所以会抛出错误。为此,我尝试了下面的方法,它需要同时处理NULL和空字符串

create or replace file format test
type = 'CSV'
skip_header = 1 FIELD_OPTIONALLY_ENCLOSED_BY = '"'
NULL_IF=('') EMPTY_FIELD_AS_NULL=false;
但这种方法不起作用,它只适用于NULL而不适用于空字符串


请告诉我如何处理snowflake中的空字符串和空值。

如果字段以逗号分隔,请尝试在空值中包含空值格式的可能性,如下所示:

type = csv 
RECORD_DELIMITER = '\n' 
FIELD_DELIMITER = ',' 
ERROR_ON_COLUMN_COUNT_MISMATCH = false 
FIELD_OPTIONALLY_ENCLOSED_BY = NONE 
skip_header = 0  
NULL_IF=('NULL','',' ','NULL','NULL','//N') 
empty_field_as_null = true

同时验证输入的非空字段是否不返回空值。

如果字段以逗号分隔,请尝试在空字段中包含空值格式的可能性,如下所示:

type = csv 
RECORD_DELIMITER = '\n' 
FIELD_DELIMITER = ',' 
ERROR_ON_COLUMN_COUNT_MISMATCH = false 
FIELD_OPTIONALLY_ENCLOSED_BY = NONE 
skip_header = 0  
NULL_IF=('NULL','',' ','NULL','NULL','//N') 
empty_field_as_null = true
FIELD_OPTIONALLY_ENCLOSED_BY = '\042' 
ESCAPE = 'NONE' 
ESCAPE_UNENCLOSED_FIELD = '\134' 
NULL_IF = ('NULL');

还要验证输入的非空字段是否不返回空值。

是否可以共享两个或三个示例记录,谢谢,Sriga您还可以将副本共享到语句中吗?我相信这部分NULL_IF=正在将空字符串转换为NULL。如果='',\\',其中有第二个选项,并且字符串中有一个空格作为一个字符,那么它是否可以为NULL而不是空字符串?能否将0作为默认值存储在数字列中?可以编辑您的问题并添加两行相似的虚拟数据,以便我们更好地提供帮助。是否可以共享两个或三个样本记录,谢谢,Sriga您也可以将您的副本共享到声明中吗?我相信这部分NULL_IF=正在将空字符串转换为NULL。如果='',\\',其中有第二个选项,并且字符串中有一个空格作为一个字符,那么它是否可以为NULL而不是空字符串?能否将0作为默认值存储在数字列中?可以编辑您的问题并添加两行类似的虚拟数据,这样我们可以更好地帮助您,而此代码可以回答此问题,提供有关此代码为什么和/或如何回答此问题的附加上下文,从而提高其长期价值。虽然此代码可以回答此问题,提供关于此代码为什么和/或如何回答此问题的附加上下文可提高其长期价值。
FIELD_OPTIONALLY_ENCLOSED_BY = '\042' 
ESCAPE = 'NONE' 
ESCAPE_UNENCLOSED_FIELD = '\134' 
NULL_IF = ('NULL');