2016-06-29 5 views
0

私は4つのラベル(A、B、C、D)を持っています。それらのすべてには単一のProperty {id}があります。 私はロードしたい関係のファイルを持っています。すべての行は、この構造を有する:Neo4jは未知のラベルを持つデータ関係をロードします

{ID_1}、{type_of_relations}、{} ID_2

はどのような関係を作成することができますか?

私の非稼働の推測では、次のとおりです。

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:/data.csv" AS line 
FIELDTERMINATOR ',' 
MATCH (a:A{id:line.id_1} OR a:B{id:line.id_1} OR a:C{id:line.id_1} OR a:D{id:line.id_1}) 
MATCH (b:A{id:line.id_2} OR b:B{id:line.id_2} OR b:C{id:line.id_2} OR b:D{id:line.id_2}) 
MERGE (a)-[:line.type_of_relations]->(b) 

答えて

0

Cypherでリレーションシップタイプをパラメータ化することはできません。

しかし、あなたはNeo4j apoc proceduresapoc.create.relationship手順を使用してこれを行うことができます。

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///file.csv" AS row 
MATCH (a) WHERE a.id = row.id_1 
MATCH (b) WHERE b.id = row.id_2 
CALL apoc.create.relationship(a, row.type_of_relations, {}, b) YIELD rel 
RETURN count(*) AS num 

手順では、動的な関係タイプを作成することができます関係の種類のパラメータを取ります。

+0

"クエリはCALLで終了できません(RETURNまたは更新句でなければなりません)(行5、列1(オフセット:167)) " CALL apoc.create.relationship(a、line.rel_type 、{}、b) "" 私の回避策は、大きなファイルをリレーションシップタイプに従っていくつかの小さなファイルに分割することです。 –

+0

ああ、そうです。申し訳ありません - 私は、クエリをRETURN句で更新しました。この手順を使用するには、[apocプロシージャライブラリをインストールする](https://github.com/neo4j-contrib/neo4j-apoc-procedures#download-latest-release)も必要です。 –

+0

ありがとう!私はまだエラーが発生しています "クエリ内のプロシージャコールは暗黙のうちに結果を暗黙的に(名前は明示的に' YIELD'を使用しています)サポートしません " 私はapocをインストールしました。遊ぶのは楽しいです。しかし、私が達成しようとしているのは、おそらく現在不可能なことかもしれません。 –

0

私はあなたがそれを行うことができるとは思いません。いくつかの理由から。

create (f:bar {name:'NewUserA'}) 
create (f:foo {name:'NewUserA'}) 
match (f:foo {name:'NewUserA'} or f:bar {name:'NewUserA'}) return f; 

コード 無効な入力 'O':期待空白、コメント、 '')または関係パターン(行1、列32(オフセット:31)) 「一致(F:FOO {名:[ NewUserA '}またはf:bar {name:' NewUserA '})はf "を返します。

どのような場合でも試合に問題があります。 idがグローバルに一意の場合は、ラベルを無視してIDだけを一致させることができます。それはあなたの "または"問題を世話するでしょう。

match (f) where f.name='NewUserA' match (t) where t.name='NewUserA' return f,t 

はノードを与えます。つまり、パラメータ化されたクエリをコーディングする場合、RELATIONSHIP_TYPEはパラメータ化できない項目の1つです。ドキュメントから: 5.5。パラメータ [..] これらのパターンはクエリプランにコンパイルされたクエリ構造の一部であるため、パラメータはプロパティ名、リレーションシップタイプ、およびラベルとして使用できません。 [..]

MERGEを別の場所の文字列として構築する方法(awkはあなたの友人です)を見て、それをシェルで実行する必要があるかもしれません。

関連する問題