2

我正在使用 OrientDB 并在插入数据(数百万行)后尝试创建新属性。

我正在尝试在 V 上创建属性以创建索引,但出现以下错误:

数据库在属性“V.ACCOUNT_NO”中包含一些与 STRING 类型不兼容的无模式数据。修复这些记录并再次更改架构 [ONetworkProtocolHttpDb]

现在部分字段类型是 INTEGER,但在我看来,将类型转换为 STRING 很容易。
我怎样才能对整个数据做到这一点?

4

1 回答 1

5

我通过在无模式模式下创建这个简单的结构来尝试您的案例:

在此处输入图像描述

这些记录是多种类型INTEGER的混合STRING

在此处输入图像描述

现在您可以使用以下查询转换非字符串记录类型:

UPDATE V SET ACCOUNT_NO = ACCOUNT_NO.asString() WHERE ACCOUNT_NO.type() <> 'STRING'

输出:

在此处输入图像描述

关于异常,当我尝试在模式完整模式下创建V.ACCOUNT_NO类型的新属性时,我得到了正确的相同错误STRING,这是正确的,因为该属性已经存在于数据库中并且包含混合类型的记录,尽管在无模式模式下.

转换所有记录后,您就可以创建新属性了。

在此处输入图像描述

希望能帮助到你

于 2016-05-03T09:46:54.190 回答