[英]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.