当我想在节点或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工作来完成这项工作......
答案 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}
。
答案 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文件中的标签问题有用,请阅读官方手册,它帮助我找到了解决问题的方法。