雪花:通过插入值添加多个值时面临问题
Posted
技术标签:
【中文标题】雪花:通过插入值添加多个值时面临问题【英文标题】:Snowflake : Facing issues while adding multiple values through insert into values 【发布时间】:2021-03-12 10:17:14 【问题描述】:我正在尝试使用“插入值”语句在雪花表中添加多行。
这里是创建表语句:
create table table1(col1 float);
我正在使用以下命令插入多行:
insert into table1(col1) values (-3.4E20),(3.4E-20);
我收到类似的错误
“无法识别数值'-340000000000000000000'”
另一方面,如果我尝试分别插入两行,它会成功。
插入命令:
insert into table1(col1) values (-3.4E20);
insert into table1(col1) values (3.4E-20);
你能帮我找出多行插入命令的问题吗?
任何建议,帮助都会非常有帮助。
【问题讨论】:
【参考方案1】:扩展 Marcel 的答案,此查询产生相同的错误:
select $1
from values (-3.4E20), (3.4E-20);
这个解决了它:
select $1
from values (-3.4E20::float), (3.4E-20);
从查询中可以看出,解决方案是将信息添加到文字数字中,这样 Snowflake 就不会对可能的类型感到困惑。
【讨论】:
右费利佩。但我一直在寻找更通用的解决方案。因为如果我确定我的数据将始终是浮点数或任何其他数据类型,我就可以做到。但是在生产工作负载中,如果我必须为所有数据类型和不同数据重用代码,它必须无缝工作,并且不必为第一条记录推断数据类型。我猜它目前是雪花的一个限制。 我假设在生产中您不需要运行像insert into table1(col1) values (-3.4E20);
这样的语句——如果您这样做,您能否提供更多关于特定用例的信息,以便我们可以在生产中加强它?
没错,Felipe,那是当时的一种用例,我们现在已经恢复到更强大的替代方案。感谢您的回复。【参考方案2】:
我不确定这是否与您的问题有关,但也许它有助于找到答案。
根据文档,您必须确保插入值的数据类型在各行中保持一致,因为服务器将第一行的数据类型作为指导。所以...如果您的第一个和第二个值子句中的数据类型不同(可能是由于上述值之一的某些自动转换),则组合查询将失败。即使它们与表列的数据类型匹配!
链接:https://docs.snowflake.com/en/sql-reference/sql/insert.html#multi-row-insert-using-explicitly-specified-values
【讨论】:
感谢马塞尔的回复。我已经浏览了文档。但这并没有帮助我澄清我的疑问,因为您看到我在第一个值本身就遇到了错误。并且这两个值的类型相同,并且根据数据类型也是有效值。以上是关于雪花:通过插入值添加多个值时面临问题的主要内容,如果未能解决你的问题,请参考以下文章