2016-08-08 2 views
0

オリエントDBに一括して挿入したいレコードが約10,000あります。 私の問題はレコードの一部が既にDBに存在することです(私はいくつかのユニークなフィールドに基づいて決定します)。だから私のバッチ操作は、既存のレコードを更新して、既存のレコードを新規作成する必要があります。特定のバッチファイルに対して同じレコードが別の値(別のフィールドを除く)で2回発生する可能性があります。そのようなレコードも更新される必要があります。OrientDBのバッチインサート

例:上記の操作のために

 
description firstName lastName title   organization currentStage inCurrentStageAsOf serviceLevelMonitored 
description1 John Doe   CEO    organization1 Existing  1012001    Availability 
description2 Jane Doe   CIO    organization2 End-of-Life  2022002    Performance 
description3 Jane Doe   CIO    organization2 End-of-Life  2022002    Performance 
description2 Jane Joe   CIO    organization2 End-of-Life  2022002    Performance 
description4 Jane Doe   CIO    organization2 End-of-Life  2022002    Performance 
description5 Jane Doe   CIO    organization2 End-of-Life  2022002    Performance 
description6 Jane Doe   CIO    organization2 End-of-Life  2022002    Performance 
description7 Jane Doe   CIO    organization2 End-of-Life  2022002    Performance 
description8 Jane Doe   CIO    organization2 End-of-Life  2022002    Performance 
description9 Jane Doe   CIO    organization2 End-of-Life  2022002    Performance 
description10 Jane Doe   CIO    organization2 End-of-Life  2022002    Performance 
description11 Jane Doe   CIO    organization2 End-of-Life  2022002    Performance 
description2 Jane Doe       organization2 End-of-Life  2022002    Performance 

私のユニークなフィールドが記述とlastNameある場合。私はRec2とRec13でファイルに重複レコードを持っていますが、Rec4は重複していません。また、レコードの一部がすでにDBに存在する可能性があります。

私のファイルが巨大であれば、どのようにバッチを適用するのですか? 私が考えることができるのは、Rec Asが存在するかどうかを見つけるためのDBへのファイアasynスレッドです。既存のレコードのIDを更新し、全体を2つに分けます(更新するレコードと作成するレコード)別々に更新してください。ワンショットでやることがあればアドバイスを探します。 ありがとうございます。

+0

こんにちはあなたは 'UPERT UPERT'を考えましたか? –

+0

http://orientdb.com/docs/2.1/SQL-Update.html –

答えて

3

UPDATE UPSERTを使用するとできます。

としては、あなたが(あなたの最初のレコードのためなど)を使用して更新することができ、あなたのケースでmanualあなたが興味のプロパティにUNIQUEインデックスを必要とし、そこらで

CREATE INDEX yourClass.desc_lastName ON yourClass (description,lastName) UNIQUE_HASH_INDEX 

を説明した:

UPDATE yourClass set description="description1",firstName="John",lastName="Doe",title="",organization="organization1",currentStage="Existing" UPSERT WHERE description="description1" AND lastName="Doe"