2017-12-06 15 views
0

CSVファイルの情報を使用して、2つの異なるグラフ間のリレーションシップを作成しようとしています。それぞれのグラフのサイズが500k +と1.5m +であるため、私が行ったようにクエリを作成しました。Neo4jでリレーションシップを作成中にCSVをインポートする

これは私が持っているクエリです:

LOAD CSV WITH HEADERS FROM "file:///customers_table.csv" AS row WITH row 
MATCH (m:Main) WITH m 
MATCH (c:Customers) USING INDEX c:Customers(customer) 
WHERE m.ASIN = row.asin AND c.customer = row.customer 
CREATE (c)-[:RATED]->(m) 

これは私が受け取るエラーです:

Variable `row` not defined (line 4, column 16 (offset: 164)) 
"WHERE m.ASIN = row.asin AND c.customer = row.customer" 
       ^

メインテーブルの例は次のとおりです。

{ 
    "ASIN": "0827229534", 
    "totalreviews": "2", 
    "categories": "2", 
    "title": "Patterns of Preaching: A Sermon Sampler", 
    "avgrating": "5", 
    "group": "Book" 
} 

そして例の顧客:

{ 
    "customer": "A2FMUVHRO76A32" 
} 

と顧客テーブルのcsv内部、私が持っている:

Customer, ASIN, rating 
A2FMUVHRO76A32, 0827229534, 5 

私はそれがエラーをバック投げている理由を見つけ出すように見えることはできません。

答えて

1

クエリの最初のWITH句(WITH row)は不要ですが、変数をWITH句に追加する必要があります。したがって、このバージョンはコンパイルされます。

LOAD CSV WITH HEADERS FROM "file:///customers_table.csv" AS row 
MATCH (m:Main) 
WITH m, row 
MATCH (c:Customers) USING INDEX c:Customers(customer) 
WHERE m.ASIN = row.asin AND c.customer = row.customer 
CREATE (c)-[:RATED]->(m) 

その理由は、その変数に範囲を限定しながら、2つのクエリの部分一緒にエッセンス、WITH鎖において、(場合によっては、また、実行計算、集計、など)、です。あなたも、あなたはそれを省略しても、単一のものに2つのMATCH句をマージすることができ、第二WITH句を必要としない、ということ

を言った:

LOAD CSV WITH HEADERS FROM "file:///customers_table.csv" AS row 
MATCH (m:Main), (c:Customers) USING INDEX c:Customers(customer) 
WHERE m.ASIN = row.asin AND c.customer = row.customer 
CREATE (c)-[:RATED]->(m) 
+2

は素晴らしい作品、どうもありがとうございました。 – tuckeriswilde

関連する問題