Я пытаюсь импортировать большой объем данных из csv в neo4j с помощью neo4j-rest java api. Для того, чтобы избежать из исключений памяти, я использую периодический коммит, поэтому код Java образца будет:Как обрабатывать откат транзакций в Neo4j во время загрузки больших данных из csv с помощью периодического фиксации
// 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