【问题标题】:Labels on Nodes and Relationships from a CSV fileCSV 文件中节点和关系上的标签
【发布时间】:2015-04-28 14:17:13
【问题描述】:

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

我在 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 工具来完成这项工作,找到这个问题的解决方案也非常重要......

【问题讨论】:

  • 简而言之,当前的load csv 不支持动态分配的标签。但是,有一种解决方法。这是几周前的一篇文章,详细介绍了解决方案...stackoverflow.com/questions/29419634/…

标签: csv neo4j load label cypher


【解决方案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

【讨论】:

    【解决方案2】:

    谢谢大家的回答,但他们都没有帮助我解决我的问题。

    我找到了一个完全符合我要求的解决方案。解决方案是 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"
    

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

    请记住,您可以通过向 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 文件中的标签的特定问题很有用,请阅读官方手册,它对我找到解决问题的方法有很大帮助。

    【讨论】:

      猜你喜欢
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多