首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析一个大文件并填充一个Neo4j数据库

解析一个大文件并填充一个Neo4j数据库
EN

Stack Overflow用户
提问于 2015-02-04 12:57:52
回答 1查看 122关注 0票数 2

我正在从事一个Rails项目,该项目将读取和解析一些较大的文本文件(大约100 k行),并使用这些数据构建Neo4j节点(我正在使用新摄影术)。这是我编写的代码中与Neo4j相关的部分:

代码语言:javascript
复制
    d= Neography::Rest.new.execute_query("MATCH (n:`Label`) WHERE (n.`name`='#{id}') RETURN n")
    d= Neography::Node.load(d, @neo)
    p= Neography::Rest.new.create_node("name" => "#{id}") 
    Neography::Rest.new.add_label(p, "LabelSample") 
    d=Neography::Rest.new.get_node(d)
    Neography::Rest.new.create_relationship("belongs_to", p, d)

因此,我要做的是:在已经填充的db中搜索具有与解析数据相同的"name“字段的节点,为该数据创建一个新节点,并最终在它们之间创建一个关系。显然,这段代码只需花费太多的时间才能执行。所以我试着用Neography的批次,但遇到了一些问题。

代码语言:javascript
复制
    p = Neography::Rest.new.batch [:create_node, {"name" => "#{id}"}]

给我一个“未定义的”方法“拆分”,表示“nil:NilClass”

id"self".split('/').last

代码语言:javascript
复制
    d=Neography::Rest.new.batch [:get_node, d]

给我一个Neography::UnknownBatchOptionException for get_node

我甚至不确定这也能节省我足够的时间。

我还尝试了不同的方法来实现这个目标,例如使用批量进口,但是我无法找到从db中获取我需要的已经创建的节点的方法。正如你所看到的,我对这件事有点陌生,所以任何帮助都会受到感谢。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-04 14:06:46

您可能可以使用纯密码(或新生成的密码)来完成此操作。也许是这样的:

代码语言:javascript
复制
MATCH (n:Label) WHERE n.name={id}
WITH n
CREATE (p:LabelSample {name: n.name})-[:belongs_to]->n

我并不是在使用CREATE,但是如果您不想创建重复的LabelSample节点,您可以这样做:

代码语言:javascript
复制
MATCH (n:Label) WHERE n.name={id}
WITH n
MERGE (p:LabelSample {name: n.name})
CREATE p-[:belongs_to]->n

请注意,我使用的是params,这通常被推荐用于性能(虽然这只是一个查询,所以并不是什么大问题)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28322007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档