在Snowflake中无法识别数字值'abc_0011O00001y31VpQAI'

时间:2019-10-08 19:51:51

标签: snowflake-data-warehouse

(代表Snowflake客户打开以下内容...)


当我尝试插入表格时,它抛出以下错误:

  

无法识别数值'abc_0011O00001y31VpQAI'

检查表DDL,仅发现3列定义为NUMBER,其余列为VARCHAR。

我检查了SELECT查询,但未在那些NUMBER Datatype列中找到任何字符串值。还尝试在所有Varchar列中搜索值“ abc_0011O00001y31VpQAI”,但没有找到

我知道Snowflake并不总是显示正确的错误。我在这里想念什么吗?有什么办法可以解决?

# data1 $data->where('estado_carga', Util::UPLOAD_POIS_CARGA_INGRESADA); # data2 $data->where('estado_carga', Util::UPLOAD_POIS_CARGA_DEVUELTA_REVISION)->where('validado_por', auth()->id()); 均为COL4_MRR

COL5_QUANTITY

我创建了一个与原始TABLE相同的table_D,并尝试将其插入其中,效果很好。然后从table_D插入原始表中,它又可以工作了。

从原始TABLE中删除这些行,然后重新运行该作业,效果很好。

数据没有问题,因为数据全是数字,我什至也尝试过NUMBER。它插入了数据,而无需更改代码。

......

客户端当前正在等待第二天的运行,以进行重新测试,以确定这是错误还是其数据问题。同时,我们很想看看是否有人遇到过类似的挑战并提出了可行的建议。谢谢。

2 个答案:

答案 0 :(得分:0)

该错误通常表示您正在尝试将非数字数据(如“ abc_0011O00001y31VpQAI”)插入数字列。看来客户在测试中所做的一切正确,并且TRY_TO_NUMBER()是验证数字数据的好方法。

SELECT查询是否可以单独正常运行?如果是这样,那么我将检查列的数据类型是否可能存在潜在的不匹配,并确保它们的顺序正确。

我还将检查文件头是否被跳过(这可能是'abc_0011O00001y31VpQAI'的来源,因为客户没有在数据中看到它。)

答案 1 :(得分:0)

SELECT查询工作正常,我尝试创建一个具有与原始DDL相同的DDL的新表,并尝试将其加载到该新表中,效果很好。不确定为什么不将其加载到原始表中