(代表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
。它插入了数据,而无需更改代码。
......
客户端当前正在等待第二天的运行,以进行重新测试,以确定这是错误还是其数据问题。同时,我们很想看看是否有人遇到过类似的挑战并提出了可行的建议。谢谢。
答案 0 :(得分:0)
该错误通常表示您正在尝试将非数字数据(如“ abc_0011O00001y31VpQAI”)插入数字列。看来客户在测试中所做的一切正确,并且TRY_TO_NUMBER()是验证数字数据的好方法。
SELECT查询是否可以单独正常运行?如果是这样,那么我将检查列的数据类型是否可能存在潜在的不匹配,并确保它们的顺序正确。
我还将检查文件头是否被跳过(这可能是'abc_0011O00001y31VpQAI'的来源,因为客户没有在数据中看到它。)
答案 1 :(得分:0)
SELECT查询工作正常,我尝试创建一个具有与原始DDL相同的DDL的新表,并尝试将其加载到该新表中,效果很好。不确定为什么不将其加载到原始表中