Python Neo4j导入csv/DHCP数据控制复制

Python Neo4j导入csv/DHCP数据控制复制,python,csv,neo4j,Python,Csv,Neo4j,我对如何导入数据感到困惑 我有一个来自DHCP的csv,带有时间、主机名、IP地址 我想添加任何更改的ip作为新的关系,但保持状态属性为非活动的旧ip关系,我还想限制到最后10个 我不确定用cypher实现这一点的最简单方法是什么,或者我应该用python来实现这一复杂性吗 可能是始终添加(删除重复项)/csv导入 第二个查询用于停用任何旧IP(如果我有时间作为关系属性,如何查询非当前IP) 以及第三个查询,用于删除前10个以上IP挂起的关系 任何帮助或想法都将不胜感激听起来很有趣。不确定是否每

我对如何导入数据感到困惑

我有一个来自DHCP的csv,带有时间、主机名、IP地址

我想添加任何更改的ip作为新的关系,但保持状态属性为非活动的旧ip关系,我还想限制到最后10个

我不确定用cypher实现这一点的最简单方法是什么,或者我应该用python来实现这一复杂性吗

可能是始终添加(删除重复项)/csv导入

第二个查询用于停用任何旧IP(如果我有时间作为关系属性,如何查询非当前IP)

以及第三个查询,用于删除前10个以上IP挂起的关系


任何帮助或想法都将不胜感激

听起来很有趣。不确定是否每个主机ip组合在csv中只出现一次,或者在以后的时间出现“仍然在此处”更新

进口声明 清理语句 在load语句中正确设置状态时
听起来很有趣。不确定是否每个主机ip组合在csv中只出现一次,或者在以后的时间出现“仍然在此处”更新

进口声明 清理语句 在load语句中正确设置状态时
谢谢你,迈克尔!很酷。Cypher有很多我没有见过的特性。这是一种很酷的语言。再次谢谢你谢谢你,迈克尔!很酷。Cypher有很多我没有见过的特性。这是一种很酷的语言。再次感谢你
LOAD CSV FROM "url" AS row
MERGE (h:Host {name:row.hostname})
MERGE (ip:IP {name:row.IP_addr})
MERGE (h)-[:IP]->(ip) ON CREATE SET rel.created = row._time, rel.status = 1
// optional for pre-existing/previous rels 
ON MATCH SET rel.status = 0
SET rel.updated = row._time;
MATCH (h:Host) WHERE size( (h)-[:IP]->() ) > 1
MATCH (h)-[rel:IP]->(:IP)
WITH h,rel ORDER BY rel.updated DESC
WITH h, collect(rel) as rels
// not necessary when the status is set above
FOREACH (r in rels[1..9] | SET r.status=0)
FOREACH (r IN rels[10..-1] | DELETE r)
MATCH (h:Host)-[rel:IP {status:0}]->(:IP)
WITH h,rel ORDER BY rel.updated DESC
WITH h, collect(rel) as rels
FOREACH (r IN rels[9..-1] | DELETE r)