****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。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于