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

Labels on Nodes and Relationships from a CSV file

当我想在节点或关系上添加标签时遇到问题。

我在 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 Language 执行此操作,您能否推荐我另一种方法来完成我的工作? 找到这个问题的解决方案非常重要,即使使用 Cypher 解决方案或任何 Java 事情来完成这项工作...

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

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: with #{FROM}.

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

谢谢大家的回答,但是 none 帮助我解决了我的问题。

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

所以这是我为我所做和工作的一个例子

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

test.csv 文件示例:

PropertyTest,:LABEL
proptest,TEST

对于 windows 我已经完成了 Neo4jImport.bat 命令,正如 Neo4j.You 的手册页中描述的那样,可以在 Windows 中找到 Neo4jImport.bat在 "C:\Program Files\Neo4j Community\bin" 并且你从命令行 (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 添加更多 headers

来在节点上添加任意数量的标签和属性

节点中两个标签的示例:

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 文件的标签问题有用,请阅读官方手册,它对我找到解决问题的方法有很大帮助。