[学习笔记]neo4j离线导入csv文件——neo4j import

[学习笔记]neo4j离线导入csv文件——neo4j import,第1张

官方文档

一、

准备好所需的csv文件,文件格式为:节点[node:ID,name,:LABEL]以及关系[:START_ID,:END_ID,:TYPE],文件存放在neo4j安装地址,新建一个import文件夹,参考地址:F:\neo4j-chs-community-4.2.2-windows\import


二、

打开cmd窗口,进入neo4j安装地址

F:\neo4j-chs-community-4.2.2-windows

先输入neo4j stop 停止服务

neo4j stop

再输入neo4j-import指令,其中database新建了一个.db库,所以如果F:\neo4j-chs-community-4.2.2-windows\data\databases中已经有了同名库就会报错。

neo4j-admin import --mode=csv --database=test.db --nodes import\cnnvd_id.csv --nodes import\cve_id.csv --relationships import\rels_nickname.csv

需注意的一点是,需进入F:\neo4j-chs-community-4.2.2-windows\conf打开neo4j.conf文件,将dbms.active_database=后面内容改成新建库的名字,删除前面的#,并保存文件,以确保http://localhost:7474/browser/打开的是新建库。

三、

如果成功写入数据则会输出以下内容
这时候就可以进一步输入neo4j start

neo4j start

打开http://localhost:7474/browser/,输入match§-[r]->(q) return p,q,r limit 1000

match(p)-[r]->(q) return p,q,r limit 1000

可以看到数据以及全部写进去了

报错分析

1、IMPORT FAILED in 3s 383ms.
Data statistics is not available.
Peak memory usage: 1.005GiB
Error in input data
Caused by:ERROR in input
data source: BufferedCharSeeker[source:F:\neo4j-chs-community-4.2.2-windows\import_rels_reference.csv, position:580992, line:16600]
in field: :TYPE:3
for header: [:START_ID, :END_ID, :TYPE]
raw field value: rels_reference
original error: 0 (global id space)-[rels_reference]->ref16599 (global id space) referring to missing node 0

根据提示,应当是_rels_reference.csv中的数据有问题,报错指向line:16600,所以就去文件中找16600行,发现是数据缺失,修改后解决问题

2、org.neo4j.internal.batchimport.input.HeaderException: Missing header of type START_ID, among entries [:START_ID :END_ID :TYPE]

原因:由于我用Microsoft excel修改完数据后保存直接保存为普通csv格式,导致三列数据合并为一列,因此读取不到[:START_ID :END_ID :TYPE]数据内容

解决方案:在保存文件时,选择CSV UTF-8(逗号分隔)(*.csv),然后选择工具-web选项-编码-将此文件另存为utf-8

此方法还可以解决乱码问题

3、Import error: F:\neo4j-chs-community-4.2.2-windows\data\databases\practice5.db already contains data, cannot do import here
Caused by:F:\neo4j-chs-community-4.2.2-windows\data\databases\practice5.db already contains data, cannot do import here
java.lang.IllegalStateException: F:\neo4j-chs-community-4.2.2-windows\data\databases\practice5.db already contains data, cannot do import here
at org.neo4j.internal.batchimport.store.BatchingNeoStores.assertDatabaseIsEmptyOrNonExistent(BatchingNeoStores.java:211)

问题是practice5.db这个库中已经有数据了,解决方法是将practice5.db中的数据清空。
此方法会带来一个问题,就是http://localhost:7474/browser/会报错库不可用或者处于离线状态。所以我通常在检测csv数据是否有误时采用清空库中数据的方法,在确保一切无误后,选择新建一个不同名的新库,且不要忘记去conf中修改数据,修改方法见步骤二。

##方法仅供参考

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/737665.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存