Sql “无法识别数值”-哪列?

Sql “无法识别数值”-哪列?,sql,snowflake-cloud-data-platform,Sql,Snowflake Cloud Data Platform,我正在尝试将数据从暂存表插入主表。该表有近300列,混合了数据类型的varchar、整数、小数、日期等 雪花给出了数值无法识别的无效错误消息 我已经浏览并删去了查询的各个部分,试图找出它的来源。几个小时后,每一个专栏都被删掉了,但它仍然在发生 有没有人知道像Redshift这样的雪花诊断查询,它可以告诉我问题发生的特定列?不幸的是,在您所处的位置没有。如果您返回到加载数据的副本中,您将能够使用VALIDATE函数获得记录和字节偏移级别的更好信息 我会查询您的暂存表中的数字字段并查找空格,或者您可

我正在尝试将数据从暂存表插入主表。该表有近300列,混合了数据类型的varchar、整数、小数、日期等

雪花给出了数值无法识别的无效错误消息

我已经浏览并删去了查询的各个部分,试图找出它的来源。几个小时后,每一个专栏都被删掉了,但它仍然在发生


有没有人知道像Redshift这样的雪花诊断查询,它可以告诉我问题发生的特定列?

不幸的是,在您所处的位置没有。如果您返回到加载数据的副本中,您将能够使用VALIDATE函数获得记录和字节偏移级别的更好信息

我会查询您的暂存表中的数字字段并查找空格,或者您可以使用try_to_number函数包装所有指定为数字字段的字段。有点乏味,但如果你没有太多的数字,可能不会太糟糕


需要注意的是,在stage时,您应该尝试使用NULL_IF选项来消除坏字符和/或尝试使用stage表中的实际数据类型将它们加载到stage中,这样您就可以在加载到Snowflake之前利用VALIDATE函数来确保数据类型正确。

不幸的是,这不是您现在所处的位置。如果您返回到加载数据的副本中,您将能够使用VALIDATE函数获得记录和字节偏移级别的更好信息

我会查询您的暂存表中的数字字段并查找空格,或者您可以使用try_to_number函数包装所有指定为数字字段的字段。有点乏味,但如果你没有太多的数字,可能不会太糟糕


需要注意的是,在stage时,您应该尝试使用NULL_IF选项来消除坏字符和/或尝试使用stage表中的实际数据类型将它们加载到stage中,因此,在加载到Snowflake之前,您可以利用VALIDATE函数确保数据类型正确。

使用try\u to\u number和/或try\u to\u decimal查询您的暂存,以获取表中的数字和小数字段,并使用减号来获得差异

从@stage中选择$1、$2、$300

减去

选择$1,尝试\u至\u编号$2…$300from@stage


如果任何数字字段具有无法转换的字符串,则该字符串将为空,然后减号应返回有问题的行。一旦获得行,请尝试分析结果集中的列是否存在错误。

使用try\u to\u number和/或try\u to\u decimal查询您的暂存,以获取表和用减号得到差

从@stage中选择$1、$2、$300

减去

选择$1,尝试\u至\u编号$2…$300from@stage

如果任何数字字段有一个无法转换的字符串,则该字符串将为null,然后减号将返回有问题的行。获取行后,请尝试分析结果集中的列是否有错误