You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Neo4j导入本地CSV时遇"Cannot read field 'next'..."错误求助

Neo4j导入CSV时出现"Cannot read field 'next' because 'e.currentToken' is null"错误原因分析

问题详情

我最近开始学习Neo4j,第一个任务是导入本地CSV文件,执行的Cypher命令如下:

load csv from 'file:///C:\Users\TBR\Documents\us-counties.csv' as row
merge (c:County{date:row[1], county: row[2], state: row[3], fips: row[4],})
set c.cases=toInteger(row[5]),c.deaths= toInteger(row[6])

执行后返回错误:

Cannot read field "next" because "e.currentToken" is null

网上找不到这个错误的相关信息,想知道错误原因。

CSV文件结构:第一列为序号,第二列是date,第三列是county,第四列是state,第五列是fips,第六列是cases,第七列是deaths。

错误原因分析

  1. Cypher语法错误
    你写的merge语句里,fips: row[4],末尾多了一个逗号,这违反了Cypher的语法规则——对象属性列表的最后一个键值对后面不能加逗号。这个语法错误会导致Neo4j的语句解析器出现异常,从而抛出这个不够直观的错误提示。

  2. 文件路径格式错误
    Windows系统下的文件路径在Neo4j的LOAD CSV命令里,不能直接使用单反斜杠\,因为反斜杠在字符串中是转义字符。正确的写法有两种:

  • 使用正斜杠:file:///C:/Users/TBR/Documents/us-counties.csv
  • 使用转义的反斜杠:file:///C:\\Users\\TBR\\Documents\\us-counties.csv
  1. CSV表头处理缺失(潜在问题)
    如果你的CSV文件第一行是表头(比如包含date、county这些字段名),但命令里没有加WITH HEADERS参数,会导致row[1]实际取的是第一行数据而不是表头对应的列,后续的toInteger()转换也可能出错,虽然这不是当前错误的直接原因,但也是导入时需要注意的问题。

内容的提问来源于stack exchange,提问作者FelixCrd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 20:35:05