雪花 jdbc 参数为所有数据类型返回 VARCHAR

Posted

技术标签:

【中文标题】雪花 jdbc 参数为所有数据类型返回 VARCHAR【英文标题】:snowflake jdbc paramter returning VARCHAR for all datatypes 【发布时间】:2019-11-07 11:46:27 【问题描述】:

Snowflake JDBC 驱动程序将所有数据类型的参数元数据报告为 VARCHAR。有什么办法可以解决这个问题吗?

DDL:- 创建表INTTABLE(INTCOL整数)

以下是 Snowflake ODBC 驱动程序的输出

SQLPrepare:
In:StatementHandle = 0x00000000021B1B50, StatementText = "INSERT INTO INTTABLE(INTCOL) VALUES(?)", TextLength = 42
Return: SQL_SUCCESS=0

SQLDescribeParam:
In:StatementHandle = 0x00000000021B1B50, ParameterNumber = 1, DataTypePtr = 0x00000000001294D0, ParameterSizePtr = 0x0000000000126950,DecimalDigits =0x0000000000126980, NullablePtr = 0x00000000001269B0
Return: SQL_SUCCESS=0
Out:*DataTypePtr = SQL_VARCHAR=12, *ParameterSizePtr = 16777216, *DecimalDigits = 0, *NullablePtr = SQL_NULLABLE=1

以下是使用 Snowflake JDBC 驱动程序的输出。

PreparedStatement ps = c.prepareStatement("INSERT INTO INTTABLE(INTCOL) VALUES(?)");

ParameterMetaData psmd = ps.getParameterMetaData();

for(int i=1 ;i<=psmd.getParameterCount(); i++) 
    System.out.println(psmd.getParameterType(i)+ "  " + psmd.getParameterTypeName(i));

输出:- 12 条文字

【问题讨论】:

Mithun,您需要提供更多有关此问题的信息。你试过什么,你能举出例子吗?我对 Snowflake 使用 JDBC 驱动程序,并且数据类型正确显示。请参考以下内容作为提问的指南:***.com/help/how-to-ask 您的问题很可能出在您的代码中,例如。实际上并没有检查不同的参数。 @Mithun 您能否使用以下内容编辑您的问题:表格描述和示例代码 - 然后您希望它看起来像什么,包括类型。在这种情况下,通常更容易在加载之前使用类型准备数据,但这取决于您的期望。 感谢您的建议。我已经更新了帖子。 【参考方案1】:

感谢您在帖子中添加更多信息。不过,我可能还在做一些猜测。

如果您尝试从 Varchar 更改表值类型,但其中没有值,您可以删除该表,然后重新创建它。

如果您想更改表中已有的内容,请先尝试更改表:Manual Reference

还有 CREATE OR REPLACE TABLE(col , col 2 ) 可以兼顾两者。

这就是你要找的吗?

【讨论】:

以上是关于雪花 jdbc 参数为所有数据类型返回 VARCHAR的主要内容,如果未能解决你的问题,请参考以下文章

如果参数是数字,我如何在雪花中获得一个 javascript 函数以返回一个值,或者如果参数不是数字,则返回另一个值?

使用 JDBC 将数据插入雪花

雪花变量数据类型

使用雪花 JDBC 驱动程序自定义接收器到雪花非常慢

使用 JDBC 从存储过程中获取 Oracle 表类型

如何将所有数据提取到拆分行中的雪花对象数组中?