Как получить вложенные структуры данных в данных DataBricks с помощью JDBCJAVA

Программисты JAVA общаются здесь
Anonymous
Как получить вложенные структуры данных в данных DataBricks с помощью JDBC

Сообщение Anonymous »

При использовании вложенных структур данных в данных DataBricks (например, массив или row ) с использованием JDBC, кажется, что результаты можно извлечь в виде значений json , например:

Код: Выделить всё

try (Statement s = connection.createStatement();
ResultSet rs = s.executeQuery(
"""
select array(1, 2), array('a', 'b'), array(true, false)
"""
)) {
while (rs.next()) {
System.out.println(rs.getString(1));
System.out.println(rs.getObject(1).getClass());
System.out.println(rs.getString(2));
System.out.println(rs.getObject(2).getClass());
System.out.println(rs.getString(3));
System.out.println(rs.getObject(3).getClass());
}
}
< /code>
создает действительные строки json: < /p>
[1,2]
class java.lang.String
["a","b"]
class java.lang.String
[true,false]
class java.lang.String
вызов Resultset :: getarray не реализован:

Код: Выделить всё

java.sql.SQLDataException: [Databricks][JDBC](10400) Invalid type for data - column: 3, type: Array.
at com.databricks.client.exceptions.ExceptionConverter.toSQLException(Unknown Source)
at com.databricks.client.jdbc.common.SForwardResultSet.getArray(Unknown Source)
at org.jooq.testscripts.JDBC.main(JDBC.java:44)
Это кажется хорошим, пока массив не содержит " символы, например, этот запрос Select Array ('' ') создает это недопустимое значение:

Код: Выделить всё

["""]
< /code>
вместо: < /p>
["\""]
Аналогично, при чтении Select Array (дата '2000-01-01') я получаю:
[2000-01-01]
< /code>
Вместо например, например,:["2000-01-01"]
< /code>
Это известная ошибка /ограничение в версии драйвера JDBC 2.7.1, которую я использую? Есть известный обходной путь?


Подробнее здесь: https://stackoverflow.com/questions/794 ... using-jdbc

Вернуться в «JAVA»