繁体   English   中英

Neo4j csv 数据摄取节点正在复制

[英]Neo4j csv data ingestion nodes getting replicated

我正在尝试将 csv 文件摄取到 neo4j 中。 我能够正确添加属性,但是当我创建关系时,节点会被复制。 我正在使用的 cypher 查询

LOAD CSV WITH HEADERS FROM "file:///column_meta.csv" AS csv
CREATE (a:db { db_name: csv.table_schema})
CREATE (b:table {table_name: csv.table_name})
CREATE (c:column {col_name: csv.col_name, col_desc:csv.col_comment})

MERGE (a)<-[:belongs_to]-(b)
MERGE (b)<-[:has]-(c)

这里正在创建节点和关系,但它们中的每一个都是分开的,而我正在考虑创建相互依赖的关系,例如 db_name->table_name->col_name。 谁能指出我做错了什么?

尝试这个:

MERGE可以在全局(有约束)或现有节点的上下文中唯一地创建数据

LOAD CSV WITH HEADERS FROM "file:///column_meta.csv" AS csv
MERGE (a:db { db_name: csv.table_schema})
MERGE (a)<-[:belongs_to]-(b:table {table_name: csv.table_name})
MERGE (b)<-[:has]-(c:column {col_name: csv.col_name})
ON CREATE SET c.col_desc=csv.col_comment

确保在:db(db_name)上创建约束并在:table(table_name):column(col_Name)上创建索引

试试这个例子:

--Load Order
LOAD CSV WITH HEADERS FROM 'file:///TestFolder//Order.csv' AS line
WITH line
Merge(O:OrderInformation{name:line.orderID,orderID:line.orderID})
Return Count(*);

--Load Customer
LOAD CSV WITH HEADERS FROM 'file:///TestFolder//Customer.csv' AS line
WITH line
Merge(C:Customer{name:line.customerName,customerID:line.customerID,customerName:line.customerName})
Return Count(*);

--Load Order and Customer Relationship
LOAD CSV WITH HEADERS FROM 'file:///TestFolder//Order.csv' AS row
WITH row
MATCH (O:OrderInformation {name:row.orderID}), (C:Customer {customerID:row.customerID})
//now create a relationship between them
CREATE (C)-[:ORDERS]->(O);

希望能帮助到你!

问候, 维沙尔

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM