neo4j-load-csv 有更新!

  Janix520

	 ****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.  csv一定要用 UTF-8无BOM编码,否则入库时可能乱码
  2.  默认使用;作为分隔符
  3.  导入数据前,一定要校验数据,都是坑呀,总结出的经验
  4.  建议使用绝对路径
  // 使用\t作为分隔符
  fieldterminator ‘\t’

检查csv一共多少行

  • 相对路径格式
  load csv from “file:/Test.csv” as line return count(*);
  • windows下绝对路径格式
  load csv from “file:///C:/User/wdb/2017-04-06_test.csv” as line return count(*);
  • linux下绝对路径格式
  load csv from “file:/home/usdp/databases/data/2017-04-06_test.csv” as line return count(*);

检查数据

  • 检查数据 不带标题 注意:注意路径 使用UTF-8编码,否则可能导致乱码
  load csv from “file:///C:/User/wdb/Test.csv” as line with line return line limit 5;
  • 检查数据 带标题 注意:注意路径 使用UTF-8编码,否则可能导致乱码
  load csv with headers from “file:///C:/User/wdb/Test.csv” as line with line return line limit 5;

真正导入数据

  • 第一次字段用汉字,发现很慢
  load csv with headers from “file:/Test.csv” as line create (:Person {姓名:line.姓名, 序号:toInt(line.序号), 联系方式:toInt(line.联系方式), 性别:line.性别, 班级:line.班级}) ;
  • 第二次没有用批量提交,也有点慢
  load csv with headers from “file:/Test.csv” as 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 create (:Person {name:line.姓名, number:toInt(line.序号), tel:toInt(line.联系方式), sex:line.性别, class:line.班级}) ;
  LOAD CSV FROM ‘file:///coc.cvs’ AS line CREATE (:COC{cid:toInt(line[0])}) 导入操作如上,单个节点只有一个属性,跑着跑着就报异常“GC overhead limit exceeded”了,这个应该怎么解决呐?
在load csv前面加 USING PERIODIC COMMIT (number) ,number代表的是每多少行进行一次事务提交,比如可以 USING PERIODIC COMMIT 1000。

------你的笑你的泪,是我筑梦路上,最美的太阳。