0

cypher を使用して Neo4j データベースにロードしようとしている 2 つの csv ファイルがあります: すべてのフォーミュラ 1 ドライバーを保持する drivers.csv と、F1 でレースされたすべてのラップを保存する lap times.csv です。

すべてのノードを読み込むことができましたが、ラップ タイム ファイルが非常に大きいため、かなり時間がかかりました。その後、関係を追加しようとしましたが、追加する必要があるものが多すぎて、待つことをあきらめました (数日かかり、まだ完全にロードされていませんでした)。

ノードとリレーションシップを同時にロードする方法があると確信しています。これにより、現在実行できないリレーションシップに定期的なコミットを使用できるようになります。基本的に、2 つのコマンドを 1 つに結合する必要があるだけで、いくつかの試行の後、それを行う方法がわかりませんか?

// load in the lap_times.csv, changing the variable names - about half million nodes (takes 3-4 days)
PERIODIC COMMIT 25000
LOAD CSV WITH HEADERS from 'file:///lap_times.csv'
AS row
MERGE (lt: lapTimes {raceId: row.raceId, driverId: row.driverId, lap: row.lap, position: row.position, time: row.time, milliseconds: row.milliseconds})
RETURN lt;
// add a relationship between laptimes, drivers and races - takes 3-4 days
MATCH (lt:lapTimes),(d:Driver),(r:race)
WHERE lt.raceId = r.raceId AND lt.driverId = d.driverId
MERGE (d)-[rel8:LAPPING_AT]->(lt)
MERGE (r)-[rel9:TIMED_LAP]->(lt)
RETURN type(rel8), type(rel9)

助けてくれてありがとう!

4

1 に答える 1