Тип значения для поля json XXXX был представлен как YYYY, но обнаруженный тип данных столбца таблицы был ZZZZ.

При использовании SDP для извлечения данных из Cloudant и заполнения dashDB я иногда вижу сообщения об ошибках в таблице dashdb «XXXX_OVERFLOW», которые выглядят следующим образом:

EXCEPTION
The value type for json field XXXX was presented as java.lang.String 
but the discovered data type of the table's column was Boolean. The document   
could not be imported into the created database.

_ID
mydocument-12345

Вопросы

  1. Почему я получаю эту ошибку?
  2. Как я могу это исправить?

person Chris Snow    schedule 29.09.2015    source источник


Ответы (1)


SDP должен решить соответствующий тип данных SQL для каждого типа данных JSON, присутствующего в документах Cloudant. Система типов данных JSON (см. http://json.org) является более общей по сравнению с типом данных SQL. системы (см., например, типы данных DB2 LUW 9.8). В результате алгоритм SDP использует некоторые эвристики для вычисления наиболее подходящего типа данных SQL для универсального типа JSON.

Например, число в формате JSON сопоставляется либо с числом с плавающей запятой SQL, либо с целым числом SQL на основе значений атрибутов, найденных в образце документа.

строка JSON, которая использует только «ИСТИНА/ЛОЖЬ», в результате создаст логическое значение SQL.

  1. Вы получаете эту ошибку, потому что некоторые значения, найденные за пределами обнаруженного образца, не могут быть приведены к используемому типу данных SQL.

  2. Единственными вариантами решения этой проблемы являются либо

    • modify individual documents and modify the values in question OR
    • увеличьте размер выборки, используемый во время обнаружения схемы, до неограниченного (подробнее)
person Holger Kache    schedule 29.09.2015
comment
Добро пожаловать в SO @Holger! - person Chris Snow; 29.09.2015