簡體   English   中英

Neo4J加載CSV並創建關系不會導入所有數據

[英]Neo4J load CSV and create relationships doesn't import all data

我正在使用以下CSV load Cypher語句導入具有約350萬條記錄的csv文件。 但它僅進口約320萬。 因此大約30萬條記錄未導入。

USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM ("file:///path/to/csvfile.csv") as line
CREATE (ticket:Ticket {id: line.transaction_hash, from_stop: toInt(line.from_stop), to_stop: toInt(line.to_stop), ride_id: toInt(line.ride_id), price: toFloat(line.price)})
MATCH (from_stop:Stop)-[r:RELATES]->(to_stop:Stop) WHERE toInt(line.route_id) in r.routes
CREATE (from_stop)-[:CONNECTS {ticket_id: ID(ticket)}]->(to_stop)

請注意,已經在單獨的import語句中創建了Stop節點。

當我僅創建節點而不創建關系時,它能夠導入所有數據。 相同的import語句可以與較小的一組相同格式的CSV數據配合使用。

我嘗試過兩次,只是為了確保它不會意外終止。

Neo4J中存在關系限制節點嗎? 還是其他原因?

Neo4J version: 3.0.3 size of database directory is 5.31 GiB.

這可能是因為只要MATCH在一行中不成功,該行的整個查詢(包括第一個CREATE )也會失敗。

另一方面, OPTIONAL MATCH的失敗不會終止整個查詢行。 嘗試這個:

USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM ("file:///path/to/csvfile.csv") as line
CREATE (ticket:Ticket {id: line.transaction_hash, from_stop: toInt(line.from_stop), to_stop: toInt(line.to_stop), ride_id: toInt(line.ride_id), price: toFloat(line.price)})
OPTIONAL MATCH (from:Stop)-[r:RELATES]->(to:Stop)
WHERE toInt(line.route_id) in r.routes
FOREACH(x IN CASE WHEN from IS NULL THEN NULL ELSE [1] END |
  CREATE (from)-[:CONNECTS {ticket_id: ID(ticket)}]->(to)
);

如果OPTIONAL MATCH成功執行了一行,則FOREACH子句使用某種回旋技術僅CREATE關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM