neo4j导入CSV与关系

时间:2017-08-03 13:55:44

标签: csv import neo4j cypher relationship

我正在导入从关系数据库导出的.CSV文件。导入正常,但是当我尝试使用指定的标签在创建的节点之间创建关系时,它会为关系创建新节点,而不是使用现有标签。我已经对这个问题持续了3天 - 任何想法?

代码:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///seshatdata/sellable_unit_features.csv" AS line 
WITH line, SPLIT(line.ship_dt, '-') AS date

CREATE (sellableunit:SellableUnit {sellable_unit_id: line.sellable_unit_id, sellable_unit_nm: line.sellable_unit_nm, sellable_unit_version_id: line.sellable_unit_version_id})
MERGE (feature:Feature {Feature_id:line.feature_id, feature_nm: line.feature_nm})

CREATE (SellableUnit)-[r:CONTAINS]->(Feature)

SET r.start_year = TOINT(date[0]);

显然,CREATE (SellableUnit)-[r:CONTAINS]->(Feature)行是罪魁祸首 - 我只是不知道为什么。

1 个答案:

答案 0 :(得分:2)

您的Cypher查询存在拼写错误。 Cypher对variable declarations区分大小写。

  

变量名称区分大小写,并且可以包含下划线和   字母数字字符(a-z,0-9),但必须始终以a开头   信件。如果需要其他字符,可以引用变量   使用反引号(`)标志

试一试:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///seshatdata/sellable_unit_features.csv" AS line 
WITH line, SPLIT(line.ship_dt, '-') AS date

CREATE (sellableunit:SellableUnit {sellable_unit_id: line.sellable_unit_id, sellable_unit_nm: line.sellable_unit_nm, sellable_unit_version_id: line.sellable_unit_version_id})
MERGE (feature:Feature {Feature_id:line.feature_id, feature_nm: line.feature_nm})

CREATE (sellableUnit)-[r:CONTAINS]->(feature)

SET r.start_year = TOINT(date[0]);

您正在将节点存储到名为sellableUnit(小写s)的变量中,但在CREATE语句中使用名为SellableUnit的变量(大写S)。 feature也一样。