2

OrientDB を使用しており、データ (数百万行) を挿入した後に新しいプロパティを作成しようとしています。

インデックスを作成するために V でプロパティを作成しようとしていますが、次のエラーが発生します。

データベースには、タイプ STRING と互換性のないプロパティ「V.ACCOUNT_NO」にスキーマのないデータが含まれています。それらのレコードを修正し、スキーマを再度変更します [ONetworkProtocolHttpDb]

現在、フィールド タイプの一部は INTEGER ですが、タイプを STRING に変換するのは非常に簡単に思えます。
どうすればデータ全体にそれを行うことができますか?

4

1 に答える 1

5

スキーマレスモードでこの単純な構造を作成して、あなたのケースを試しました:

ここに画像の説明を入力

これらのレコードは、INTEGERSTRINGタイプが混在しています。

ここに画像の説明を入力

次のクエリを使用して、文字列以外のレコード タイプを変換できるようになりました。

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

出力:

ここに画像の説明を入力

例外については、スキーマフル モードV.ACCOUNT_NOでタイプの新しいプロパティを作成しようとすると、同じエラーが正しく発生しました。これは、プロパティがデータベースに既に存在し、スキーマレス モードではあるが混合タイプのレコードが含まれているためです。 STRING.

すべてのレコードが変換されると、新しいプロパティを作成できるようになります。

ここに画像の説明を入力

それが役に立てば幸い

于 2016-05-03T09:46:54.190 に答える