[英]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.