neo4j-load-csv
发布于 9 个月前 作者 wkq278276130 750 次浏览 最后一次编辑是 4 个月前 来自 分享

Neo4j load csv 使用

LOAD CSV非常适合导入中小型数据,例如最高10M的记录范围。 对于大数据集,即在100B记录范围内,我们可以访问专门的批量导入程序。

官方实例

LOAD CSV FROM "http://data.neo4j.com/examples/person.csv" AS line
fieldterminator '\t'
MERGE (n:Person {id: toInt(line[0])})
SET n.name = line[1]
RETURN n

(1) 导入前注意事项

  1. csv一定要用 UTF-8无BOM编码,否则入库时可能乱码
  2. 默认使用;作为分隔符
  3. 导入数据前,一定要校验数据,都是坑呀,总结出的经验
  4. 建议使用绝对路径

// 使用\t作为分隔符 fieldterminator ‘\t’

(2) 检查csv一共多少行

(2.1) 相对路径格式

load csv from "file:/Test.csv" as line return count(*);

(2.2) windows下绝对路径格式

load csv from "file:///C:/User/wdb/2017-04-06_test.csv" as line return count(*);

(2.3) linux下绝对路径格式

load csv from "file:/home/usdp/databases/data/2017-04-06_test.csv" as line return count(*);

(3) 检查数据

(3.1) 检查数据 不带标题 注意:注意路径 使用UTF-8编码,否则可能导致乱码

load csv from "file:///C:/User/wdb/Test.csv"  as line  with line return line limit 5;

(3.2) 检查数据 带标题 注意:注意路径 使用UTF-8编码,否则可能导致乱码

load csv with headers from "file:///C:/User/wdb/Test.csv" as line with line return line limit 5;

(4) 真正导入数据

// 第一次字段用汉字,发现很慢

load csv with headers from "file:/Test.csv" as line with line create (:Person {姓名:line.姓名, 序号:toInt(line.序号), 联系方式:toInt(line.联系方式), 性别:line.性别, 班级:line.班级}) ;

// 第二次 优化后 没有用批量提交,也有点慢

load csv with headers from "file:/Test.csv" as line with line create (:Person {name:line.姓名, number:toInt(line.序号), tel:toInt(line.联系方式), sex:line.性别, class:line.班级}) ;

// 第三次 再次优化后 感觉比前两次快多了

using periodic commit 1000 load csv with headers from "file:///C:/User/wdb/Test.csv" as line with line create (:Person {name:line.姓名, number:toInt(line.序号), tel:toInt(line.联系方式), sex:line.性别, class:line.班级}) ;

本文转自 http://weikeqin.cn/2017/04/11/neo4j-load-csv/

回到顶部