[英]How to read an array of numeric values from snowflake with JDBC?
我在包含浮點值的雪花表中有一個類型為 ARRAY 的列。
我想檢索此列並使用 JDBC 連接器在 Java 中創建一個double[]
。
這段代碼
int ARRAY_INDEX = 0;
resultSet.getMetaData().getColumnTypeName(ARRAY_INDEX);
返回ARRAY
但是當我嘗試讀取數據時
resultSet.getArray(ARRAY_INDEX);
我收到以下錯誤:
Exception in thread "main" net.snowflake.client.jdbc.SnowflakeLoggedFeatureNotSupportedException at net.snowflake.client.jdbc.SnowflakeBaseResultSet.getArray(SnowflakeBaseResultSet.java:795)
我能讀到的只是一個字符串:
resultSet.getString(ARRAY_INDEX);
> "[\n -4.5,\n 2.8,\n 100.0, ... ]"
然后我可以拆分這個字符串並將其解析為雙精度,但這似乎非常低效。
有沒有辦法直接檢索數值數組,理想情況下直接檢索一個 double[]?
在 Snowflake JDBC 驅動程序的源代碼中,您可以看到方法 getColumnTypeName 不受支持:
事實上,所有返回 Array 類型的方法的實現都返回未實現的異常。
Snowflake DB 以您看到字符串的方式返回 arrays :
select array_construct(1, 2, 3, 4, 5) as MY_ARRAY;
回報:
[
1,
2,
3,
4,
5
]
所以無論如何,客戶端上的 Java 代碼將不得不解析它。 您可以覆蓋 JDBC 驅動程序的getArray
方法來實現它而不是返回錯誤,但這可能不值得,除非您有很多使用getArray
的預先存在的代碼。 如果您沒有調用該方法的現有代碼,則可以在從 ResultSet 讀取的 class 中對其進行解析。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.