我想使用neo4j-rest java api將大量數據從csv導入到neo4j。爲了避免內存不足異常,我使用定期提交,所以一個示例Java代碼將是:如何在使用定期提交從csv加載大數據時處理Neo4j中的事務回滾
// just to let you know what classes I am using
import org.neo4j.rest.graphdb.query.CypherTransaction;
import org.neo4j.rest.graphdb.query.CypherTransaction.Statement;
import org.neo4j.rest.graphdb.query.CypherTransaction.Result;
import org.neo4j.rest.graphdb.query.CypherTransaction.ResultType;
private static final String CREATE_USER =
" USING PERIODIC COMMIT 10000 LOAD CSV WITH HEADERS FROM " +
"\"URL\" AS line WITH line\n" +
" CREATE (u:USER{id:toInt(line.customer_key)})";
//create USER Node
Statement userStatement = new Statement(CREATE_USER, null, ResultType.rest, false);
CypherTransaction periodicCommitTransaction = new CypherTransaction(dbPath, CypherTransaction.ResultType.rest);
periodicCommitTransaction.addAll(userStatement);
periodicCommitTransaction.commit();
現在我的問題是我應該如何處理事務回滾在定期提交?我知道定期提交語句不能在打開的事務中運行,並且在發送請求後應該立即提交。這意味着如果出現問題,無法回滾。我猜這是批量插入的常見問題,所以我應該如何處理這種回滾?我應該把我的db放在neo4j中,並嘗試從頭開始整個過程?有什麼想法嗎?
使用的URL –
一個參數是我使用它在我真正的代碼:-)我只是改變它把它在這裏的代碼。謝謝邁克爾。 – Lina