Neo4j CSV导入主键未导入问题咨询及导入可行性确认
解决Neo4j CSV导入主键未成功的问题
咱们一步步排查并解决这个问题:
1. 先验证CSV数据是否能被正确读取
首先运行这条测试语句,确认row.id是否能取到值:
LOAD CSV WITH HEADERS FROM "file:///C:/c/tabela_sujeito.csv" AS row RETURN row.id, row.idade LIMIT 5
- 如果返回的
row.id是空值:- 检查你的CSV文件表头,确认列名确实是
id(注意Neo4j对大小写敏感!如果表头是ID或Id,就得对应写成row.ID或row.Id) - 检查CSV对应行的
id列是否有非空数据,有没有存在空行或格式错乱的情况
- 检查你的CSV文件表头,确认列名确实是
2. 修正导入语句,确保主键正确导入
如果测试语句能看到row.id的有效数值,建议调整导入语句做两个关键优化:
- 显式转换数据类型:把
id转为整数(更符合主键的数值特性,避免存为字符串) - 用
MERGE替代CREATE:确保主键的唯一性,防止重复创建相同主键的节点
修改后的语句如下:
LOAD CSV WITH HEADERS FROM "file:///C:/c/tabela_sujeito.csv" AS row MERGE(s:Sujeito{suj_ID: toInteger(row.id)}) SET s.idade = toInteger(row.idade), s.altura = toFloat(row.altura), s.peso = toFloat(row.peso), s.genero = row.genero, s.mao_dominante = row.mao_dominante
3. 验证导入结果
导入完成后,运行这条查询确认主键是否成功导入:
MATCH(s:Sujeito) RETURN s.suj_ID, s.idade, s.genero LIMIT 10
如果还是有问题,可以检查CSV文件的编码格式(建议用UTF-8),或者表头的id列名是否带有隐藏空格,导致无法匹配row.id。
内容的提问来源于stack exchange,提问作者dlmartins
相关产品推荐
相关产品推荐

