2012-06-07 4 views
3

Например, две простые вершины в качестве OrientDB Graph:OrientDB GraphED - SQL вставляет край между двумя (выберите вершину RID) s? Или альтернативный подход для очень большого импорта

orientdb> CREATE DATABASE local:/databases/test admin admin local graph;  
Creating database [local:/databases/test] using the storage type [local]... 
Database created successfully. 
Current database is: local:/graph1/databases/test 
orientdb> INSERT INTO V (label,in,out) VALUES ('vertexOne',[],[]);                             
Inserted record 'V#6:0{label:vertexOne,in:[0],out:[0]} v0' in 0.001000 sec(s). 
orientdb> INSERT INTO V (label,in,out) VALUES ('vertexTwo',[],[]); 
Inserted record 'V#6:1{label:vertexTwo,in:[0],out:[0]} v0' in 0.000000 sec(s). 

Есть ли способ, чтобы создать границу между этими двумя вершинами лишь зная «а не их лейбла» РИД их ?

Например (не работает):

orientdb> INSERT INTO E (label, in, out) VALUES ('is_connected_to', (SELECT @rid FROM V WHERE label = 'vertexOne'), (SELECT @rid FROM V WHERE label = 'vertexTwo')); 
Inserted record 'E#7:0{label:is_connected_to,in:null,out:null} v0' in 0.001000 sec(s). 

Я пытался 'Свести' в качестве потенциального решения проблемы. Не повезло:

orientdb> INSERT INTO E (label, in, out) VALUES ('is_connected_to', (SELECT FLATTEN(@rid) FROM V WHERE label = 'vertexOne'), (SELECT FLATTEN(@rid) FROM V WHERE label = 'vertexTwo')); 
Inserted record 'E#7:1{label:is_connected_to,in:null,out:null} v0' in 0.001000 sec(s). 

Края, созданные не между null и null. Нет кубиков.

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

Однако, если это невозможно, любые предложения об альтернативе для пакетного импорта ребер (примерно 2M)?

Спасибо!

ответ

2

SQLCreateEdge, вероятно, что вы пытаетесь сделать:

create edge from 
(select from V where label = 'vertexOne') 
to 
(select from V where label = 'vertexTwo') 
set label = 'is_connected_to' 

однако, для очень большого импорта соединений я предложить SQLCreateLink. этот драгоценный камень предлагается here.

0

Насыпная край вставки можно как SQL Bath

begin; 
    CREATE EDGE E FROM #34:3349 TO #32:3349; 
    CREATE EDGE E FROM #41:10971 TO #33:3348; 
commit retry 100;