Neo4j CSV导入数据类型错误

时间:2018-02-09 18:25:04

标签: csv neo4j

我正在尝试使用CSV文件将家谱数据导入Neo4j。日期是字符串,如2012或19860105)。但是,在导入时,Neo4j会将它们解释为LongValue,从而产生错误。

我的导入声明是

LOAD CSV WITH HEADERS FROM 'file:///Neo4jPersonNodes1.csv' AS line FIELDTERMINATOR '|'
CREATE (:Person{RN: toInteger(line[0]),fullname: line[1],surname: line[2],name: line[3],sex: line[4],union_id: toInteger(line[5]),mn: line[6],BD: line[7],BDGed: line[8],DD: line[9],DDGed: line[10],bp_id: toInteger(line[11]),dp_id: toInteger(line[12]),BP: line[13],DP: line[14],kit: line[15]}) 

或者,添加toString()函数

LOAD CSV WITH HEADERS FROM 'file:///Neo4jPersonNodes1.csv' AS line FIELDTERMINATOR '|'
CREATE (:Person{RN: toInteger(line[0]),fullname: toString(line[1]),surname: toString(line[2]),name: toString(line[3]),sex: toString(line[4]),union_id: toInteger(line[5]),mn: toString(line[6]),BD: toString(line[7]),BDGed: toString(line[8]),DD: toString(line[9]),DDGed: toString(line[10]),bp_id: toInteger(line[11]),dp_id: toInteger(line[12]),BP: toString(line[13]),DP: toString(line[14]),kit: toString(line[15])})

CSV的样本是

"RN"|"fullname"|"surname"|"name"|"sex"|"union_id"|"mn"|"BD"|"BDGed"|"DD"|"DDGed"|"bp_id"|"dp_id"|"BP"|"DP"|"kit"
"5"|"Ale Harmens Slump"|"Slump"|"Ale Harmens"|"M"|"313"|"3"|"18891223"|"23 Dec 1889"|"19890111"|"11 Jan 1989"|"23"|"4552"|"Echten, Friesland, Neth."|"Sebastopol, California"|""

错误信息是:

  

Neo4j.Driver.V1.ClientException:'拉未消耗时出错   session.run会话记录到内存中:预期Long(7)为a   org.neo4j.values.storable.TextValue,但它是一个   org.neo4j.values.storable.LongValue'

我不确定为什么Neo4j不会将数字字符串视为字符串。

1 个答案:

答案 0 :(得分:1)

由于您的CSV文件具有标题行(并指定为WITH HEADERS),因此您的Cypher代码必须将line视为地图(其属性名称与您的所有标题名称匹配)而不是数组。

例如,您必须使用line[0]而不是line.RN。如果您相应地修复了line的所有用途,则不应再出现此类错误。