【问题标题】:Neo4j CSV import datatype errorNeo4j CSV 导入数据类型错误
【发布时间】:2018-02-09 18:25:04
【问题描述】:

我正在尝试使用 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) 是 org.neo4j.values.storable.TextValue,但它是一个 org.neo4j.values.storable.LongValue'

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

【问题讨论】:

    标签: csv neo4j


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多