如何使用CSV字段在LOAD语句中定义节点标签

nic*_*omp 5 csv neo4j cypher

此示例摘自https://neo4j.com/developer/guide-importing-data-and-etl/#_importing_the_data_using_cypher

LOAD CSV WITH HEADERS FROM "file:customers.csv" AS row
    CREATE (:Customer {companyName: row.CompanyName, customerID: row.CustomerID, fax: row.Fax, phone: row.Phone});
Run Code Online (Sandbox Code Playgroud)

我想做的是使用CSV文件中的字段在节点中定义标签。例如:

LOAD CSV WITH HEADERS FROM "FILE:///Neo4j_AttributeProvenance.csv" AS CSVLine CREATE (q:CSVLine.NodeType { NodeID:CSVLine.NodeID, SchemaName:CSVLine.SchemaName, TableName:CSVLine.TableName, DataType:CSVLine.DataType, PreviousNodeID:CSVLine.PreviousNodeID });
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

Fab*_*nna 5

你应该看看APOC程序。在这种情况下,有一个程序能够根据 .csv 文件中的列值动态创建节点。语法是:

CALL apoc.create.node(['Label'], {key:value,…?})
Run Code Online (Sandbox Code Playgroud)

在您的情况下,最简单的语法应该是:

CALL apoc.create.node(["' + CSVLine.NodeType + '"], {NodeID: "' + NodeID:CSVLine.NodeID + '", etc}) yield node
Run Code Online (Sandbox Code Playgroud)