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();
今、私の質問は、私は定期的にコミットしてトランザクションのロールバックを処理する方法ですか?私は、定期的なコミットステートメントはオープントランザクションでは実行できず、要求が送信された直後にコミットする必要があることを知っています。つまり、何か問題が生じた場合にロールバックする方法はありません。これはバッチ挿入の一般的な問題だと思います。どうすればそのようなロールバックを処理するのですか? neo4jにdbを落として、最初から全プロセスを開始すべきですか?何かご意見は?
はい、私は私だけのコードでそれをここに置くために、それを変更:-)私の実際のコードでそれを使用していますURL –
のためのパラメータを使用します。ありがとうマイケル。 – Lina