Neo4j 以祖先为关系从 CSV 导入作业
Neo4j Import Job from CSV with ancestory as the relationship
我有一些数据想插入到 neo4j 中。
最初我制作了一个脚本来将所有关系和节点创建为一个 cql 文件,它适用于较小数量的数据集,但是当我的数据集增长时我的系统崩溃了。
请记住,我使用的是 neo4j-shell 输入所有数据。
我知道我可以使用批量导入器批量插入数据,但我的整个数据集只有一个 table 具有我用来创建关系的祖先。
例如 1=> 1.2、1.2.1、1.2.2、1.3 等等。我将数据转换为 .csv 并导入它,它工作得非常好而且速度很快我能够得到所有节点,但我如何着手在 neo4j 中创建关系,只有一个 table 包含 ID、名称和祖先?
对于大型数据集,您需要将 USING PERIODIC COMMIT
与 LOAD CSV
结合使用:
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)
我有一些数据想插入到 neo4j 中。
最初我制作了一个脚本来将所有关系和节点创建为一个 cql 文件,它适用于较小数量的数据集,但是当我的数据集增长时我的系统崩溃了。
请记住,我使用的是 neo4j-shell 输入所有数据。
我知道我可以使用批量导入器批量插入数据,但我的整个数据集只有一个 table 具有我用来创建关系的祖先。
例如 1=> 1.2、1.2.1、1.2.2、1.3 等等。我将数据转换为 .csv 并导入它,它工作得非常好而且速度很快我能够得到所有节点,但我如何着手在 neo4j 中创建关系,只有一个 table 包含 ID、名称和祖先?
对于大型数据集,您需要将 USING PERIODIC COMMIT
与 LOAD CSV
结合使用:
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)