我有一个大约50米行的非常大的XML文件。将大xml文件导入嵌入到Java中的neo4j
我想创建一个XML文件的Neo4j图形数据库。
我使用Java在NetBeans IDE到:在Java应用程序
1)导入XML数据。
2)用数据创建一个Neo4j图形数据库。
对于第1步,我使用SAX解析器,该解析器一次给我一个xml标签的数据。
XML标签为:
1)会议文件。 (外标签)
2)它属于的会议。 (内标)
3)会议论文的作者。 (Inner tag)
创建Neo4j图形数据库时,我需要以下节点和关系。
1)为每个纸张创建一个新节点。 (重复不会发生,因为每张纸只描述一次)
2)为每个会议创建一个新节点。 (图中没有重复项)
3)为每个作者创建一个新节点。 (图中不存在重复项)
在关系中,每篇论文都应该连接到其会议中,并且每个作者都应该连接到作者写的论文。
例子:
我知道这是一个非常具体的问题,但我不期待一个完美的答案,我的问题,我只是在寻找致力于解决它的办法。
我对Neo4j完全陌生。
我该怎么处理这个问题?我被建议使用批量插入,但可以在插入1个值(节点)的同时使用它,并在插入图形数据库时检查条件和约束条件。
这是我想到的是:
如果标签已经有一个节点(如会议节点已经存在,不创建节点,只要找到它的ID节点和文件链接到它)或创建该节点(如果该节点不存在,则为该会议创建一个新节点,然后将该纸张链接到新节点)。纸张和作者的相同过程。 (如果作者不存在,创建一个新节点并将作者链接到论文中,或者如果作者已经存在,则找到节点并将该节点链接到论文)。这个过程需要多少时间?通过这种方法是否可行?
我有什么其他选择来解决这个问题?
任何帮助将不胜感激。
非常感谢。
你应该也有约束:Conf(id),:Author(id)和:Paper(id) –
谢谢。我已经更新了我的答案。 – cybersam
谢谢了很多答案@cybersam 在我问这个问题的时间和答案之间,我做了这样的事情,我在这个节点上创建了独特的约束,然后使用MERGE将数据插入到Graph和MATCH来获取哪个论文属于哪个作者,哪个论文属于哪个论文。 我认为它与您的建议类似,但我的代码要完成4天的估计时间。 是否有任何其他方法(如批插入),我可以使用它来为我的代码运行更快一点。 –