CSV文件中的节点和关系上的标签

时间:2015-04-28 14:17:14

标签: csv neo4j load label cypher

当我想在节点或Relatioship上添加标签时,我遇到了问题。

我在Neo4j中使用Cypher执行此操作:

LOAD CSV WITH HEADERS FROM "file:c:/Users/Test/test.csv" AS line
CREATE (n:line.FROM)

我收到此错误:

    Invalid input '.': expected an identifier character, whitespace, NodeLabel, a property map, ')' or a relationship pattern (line 2, column 15 (offset: 99))
"CREATE (n:line.FROM)"

如果使用Cypher语言无法做到这一点,您能否推荐我另外一种方法来完成我的工作? 找到解决这个问题的解决方案非常重要,即使使用Cypher解决方案或任何Java工作来完成这项工作......

2 个答案:

答案 0 :(得分:1)

取决于您需要它的动态程度,因为可变性很小:

LOAD CSV WITH HEADERS FROM "file:c:/Users/Test/test.csv" AS line
WHERE line.FROM = "Foo"
CREATE (n:Foo)

从Java开始,您可以使用node.addLabel(DynamicLabel.label(line.from))

否则你可以查看我的neo4j-shell-tools,它允许动态标签和rel-types:#{FROM}

请参阅:https://github.com/jexp/neo4j-shell-tools#cypher-import

答案 1 :(得分:1)

谢谢大家的回答,但没有一个能帮我解决问题。

我找到了一个完全符合我想要的解决方案。解决方案是Neo4jImporter工具(来自官方手册的链接:Neo4jImporter tool Manual),而不是Cypher语言和Java。

所以这里有一个我为我做过和工作的例子

test.csv文件包含“PropertyTest”和“:LABEL”。首先,它创建一个标签为“TEST”的节点,并在创建后在“TEST”节点上添加“proptest”属性。因此,要在节点上添加标签,请使用:LABEL并在同一节点上添加属性,在.csv文件中添加任何名称作为标题。

test.csv文件示例:

PropertyTest,:LABEL
proptest,TEST

对于Windows我已经完成了Neo4jImport.bat命令,因为它在Neo4j的手册页中有描述。您可以在Windows中找到“C:\ Program Files \ Neo4j Community \ bin”中的Neo4jImport.bat并运行它来自命令行(cmd)。

详细信息我打开了cmd,我沿着Neo4jImport.bat的路径走了,最后我写道:

Neo4jImport.bat --into path-to-save-your-neo4j-database --nodes path-to-your-csv\test.csv 
--delimiter ","

Neo4jImporter的默认分隔符是“,”但您可以更改它。例如,如果.csv文件中的信息与选项卡分开,则可以执行以下操作:

Neo4jImport.bat --into path-to-save-your-neo4j-database --nodes path-to-your-csv\test.csv 
--delimiter "TAB"

这就是我动态加载具有不同标签和属性的近2.000个节点的整个模型的方式。

请注意手册中您可以通过添加到csv更多标题添加任意数量的标签和所需的多个属性

节点中两个标签的示例:

PropertyTest,:LABEL,:LABEL
proptest,TEST,SECOND_LABEL

两个标签和逗号分隔的CSV文件的Neo4jImport.bat示例:

Neo4jImport.bat --into path-to-save-your-neo4j-database --nodes path-to-your-csv\test.csv 
--delimiter ","

我希望您会发现它对.csv文件中的标签问题有用,请阅读官方手册,它帮助我找到了解决问题的方法。