我应该如何将此neo4j密码/Apoc加载转换为neo4j管理导入?

我应该如何将此neo4j密码/Apoc加载转换为neo4j管理导入?,neo4j,cypher,py2neo,neo4j-apoc,Neo4j,Cypher,Py2neo,Neo4j Apoc,我正在处理电子邮件数据,并使用python对其进行解析,python每小时生成一个csv。有了这个csv,我有5个独立的加载csv命令来创建/更新节点和关系。它们是无附件或链接,仅URL,仅附件,URL和附件,以及附件到附件名称,文件名节点 我想通过批处理作业自动导入这些。因为我熟悉python,所以我只想用python实现它,但我一直在查看stack和其他地方,人们推荐neo4j admin import。从文档中看,它与我使用--nodes和--relationships所做的工作非常不同。

我正在处理电子邮件数据,并使用python对其进行解析,python每小时生成一个csv。有了这个csv,我有5个独立的
加载csv命令来创建/更新节点和关系。它们是
无附件或链接
仅URL
仅附件
URL和附件
,以及
附件到附件名称,文件名节点

我想通过批处理作业自动导入这些。因为我熟悉python,所以我只想用python实现它,但我一直在查看stack和其他地方,人们推荐
neo4j admin import
。从文档中看,它与我使用
--nodes
--relationships
所做的工作非常不同。有谁能帮助我演示如何将我在下面创建的
CYPHER/APOC LOAD CSV
示例转换为
noe4j管理导入

// URL AND ATTACHMENT
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM ("file:///sessions/4_hour_parsed_and_ready.csv") AS row
MERGE (a:Sender { name: row.From, domain: row.Sender_Sub_Fld})
MERGE (b:Link { name: row.Url_Sub_Fld, topLevelDomain: row.Url_Tld, htmlEncodedMessage: row.HTML_Encoded})
MERGE (c:Attachment { name: row.FileHash, fileExtension: row.FileName_Ext, containsMultipleExtensions: row.MultipleExtensions})
MERGE (d:Recipient { name: row.To})
WITH a,b,c,d,row
WHERE NOT row.Url_Tld = "false" AND NOT row.FileHash = "false"
CALL apoc.merge.relationship(a, row.Outcome, {}, {}, b) YIELD rel as rel1
CALL apoc.merge.relationship(b, row.Outcome2, {}, {}, d) YIELD rel as rel2
CALL apoc.merge.relationship(a, row.Outcome, {}, {}, c) YIELD rel as rel3
CALL apoc.merge.relationship(c, row.Outcome2, {}, {}, d) YIELD rel as rel4
RETURN a,b,c,d

或者如何在py2neo中包装此代码。

我刚刚创建了一个保存服务器连接信息的函数,并将所有内容包装在py2neo查询中,然后执行它

import py_2_neo_pass
from py_2_neo_pass import db_server, db_user, db_password
from py2neo import Graph, Node, Relationship

graph = Graph(ip_addr = db_server, username = db_user, password = db_password)

query='''
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM ("file:///sessions/4_hour_parsed_and_ready.csv") AS row
MERGE (a:Sender { name: row.From, domain: row.Sender_Sub_Fld})
MERGE (b:Link { name: row.Url_Sub_Fld, topLevelDomain: row.Url_Tld, htmlEncodedMessage: row.HTML_Encoded})
MERGE (c:Attachment { name: row.FileHash, fileExtension: row.FileName_Ext, containsMultipleExtensions: row.MultipleExtensions})
MERGE (d:Recipient { name: row.To})
WITH a,b,c,d,row
WHERE NOT row.Url_Tld = "false" AND NOT row.FileHash = "false"
CALL apoc.merge.relationship(a, row.Outcome, {}, {}, b) YIELD rel as rel1
CALL apoc.merge.relationship(b, row.Outcome2, {}, {}, d) YIELD rel as rel2
CALL apoc.merge.relationship(a, row.Outcome, {}, {}, c) YIELD rel as rel3
CALL apoc.merge.relationship(c, row.Outcome2, {}, {}, d) YIELD rel as rel4
RETURN a,b,c,d
'''

graph.run(query)

您可以使用neo4j管理导入来进行初始的一次性数据加载。看来您要做的是增量数据更新?你能确认一下吗是的,我会从我选择的第一个小时的数据开始。让我们假设0百小时并导入。然后下一个小时再跑。其中,merge语句只会创建以前不存在的新节点和关系。在本例中,此数据仅为内部数据的外部数据,因此,如果看到新员工接收电子邮件或新发件人向内部发送电子邮件@LjuOk,你在做定期更新。在这种情况下,neo4j管理导入将不可用。您需要通过加载CSV方法或可能通过驱动程序添加数据。如果您对大型数据集进行一次性初始加载,那么neo4j管理导入将非常有用。