json 字段 XXXX 的值类型显示为 YYYY,但发现的 table 列的数据类型为 ZZZZ

The value type for json field XXXX was presented as YYYY but the discovered data type of the table's column was ZZZZ

当使用 SDP 从 Cloudant 提取数据并填充 dashDB 时,我偶尔会在 dashdb "XXXX_OVERFLOW" table 中看到错误消息,如下所示:

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. 我该如何解决?

SDP 必须决定 Cloudant 文档中存在的每个 JSON 数据类型的匹配 SQL 数据类型。 JSON 数据类型系统(参见 http://json.org) is a lot more generic compared with the SQL data type system (see for example DB2 LUW 9.8 data types)。因此,SDP 算法采用一些启发式算法来计算通用 JSON 类型的最佳匹配 SQL 数据类型。

例如,JSON 数字 映射到 SQL 浮点数 或 SQL 整数 基于在文档样本中找到的属性值。

A JSON string 仅使用 'TRUE/FALSE' 将创建一个 SQL boolean 作为结果。

  1. 您收到此错误是因为无法将在发现样本之外找到的某些值转换为使用的 SQL 数据类型。

  2. 解决此问题的唯一选择是

    • 修改单个文档并修改有问题的值或
    • 将模式发现期间使用的样​​本大小增加到无限制 ()