私はneo4jに挿入したいデータがあります。Neo4jインポートジョブが関係として祖先を持つCSVから
最初はすべてのリレーションシップとノードをcqlファイルとして作成するためのスクリプトを作成しましたが、データセットの量は少なくて済みましたが、データセットが大きくなってシステムがクラッシュしました。
すべてのデータを入力するには、neo4j-shellを使用していたことに注意してください。
バッチインポーターでデータをバッチインサートすることはできますが、データセット全体には、リレーションシップを作成するために使用した祖先のテーブルが1つしかありません。
たとえば、1 => 1.2,1.2.1,1.2.2,1.3など。データを.csvに変換してインポートしたところ、すごくうまく機能していました。 ID、名前、および祖先を保持する1つのテーブルだけで、neo4jで作成される関係を取得するにはどうすればよいですか?今、我々は唯一のファジーアイデアを持っている...私はあなたが作成したスクリプトへと私たちに多くの情報を提供する必要があると思う
CREATE CONSTRAINT ON (n:Data) ASSERT n.id IS UNIQUE
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///data.csv" AS line
CREATE (n:Data {id: line.id, name: line.name})
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///data.csv" AS line
MATCH (n:Data {id: line.id}), (a:Data {id: line.ancestry})
MERGE (n)-[:HAS_ANCESTOR]->(a)
:大規模なデータセットについて – InverseFalcon
私はみんなを混乱させて申し訳ありません。私のスクリプトは各レコードを調べ、ノードとその関係を作成します。私は子供がいる場合、それは親に属していることを知っているので、それを簡単にした祖先の関係を使用してこれを処理しました。私は値がノードと関係としてneo4j dbに格納されることを知っています。小さなデータセットではうまくいきましたが、小さなデータセットで作業してしまえば、私はデータベース全体で同じスクリプトを使いました。ハングアップします。私のdbは、ID、名前、祖先(親)を列として持つ単一のテーブルにすべての関係とコンポーネントを持っています。 – user3831375
バッチインサートがうまくいくでしょう(CSVからのインポートでは、定期的なコミット機能を使って処理速度を大幅に向上させることができます)...それでも機能しない場合は、一度にセグメントのみを処理する方法が必要です。説明にあなたのスクリプトを追加できますか? – InverseFalcon