Hej all,
我遇到了将Paradise Papers dataset导入Neo4j(3.3.2)数据库的问题。
neo4j-admin import
报告似乎正确地将数据导入数据库。
...
IMPORT DONE in 1m 4s 889ms.
Imported:
867931 nodes
1657838 relationships
17838925 properties
Peak memory usage: 488.28 MB
...
但是,在导入数据后,数据库似乎是空的,正如Cypher查询MATCH (n) RETURN count(n);
和CALL apoc.meta.graph();
...
count(n)
0
nodes, relationships
[], []
...
以下链接指向一个脚本,该脚本应该重现我的问题。它是OS X / BSD的Bash脚本(我认为-E
的{{1}}开关在Linux上不存在)。此外,该脚本还需要在系统上安装和运行Docker。
https://github.com/HelgeCPH/cypher_kernel/blob/master/example/import_data.sh
快速运行脚本:
sed
我看不出我做错了什么。运行wget https://raw.githubusercontent.com/HelgeCPH/cypher_kernel/master/example/import_data.sh
chmod u+x import_data.sh
./import_data.sh
时,是否必须明确指向数据库?
检查容器时,数据库文件存在(cypher-shell
),其时间戳与导入数据的时间相对应。
提前感谢您的帮助!
答案 0 :(得分:0)
您的脚本有多处错误:
未加载节点,因为在CSV中未设置:ID
列。这就是我添加这部分的原因:
/ csv_paradise_papers / .nodes。 .csv 做 sed -i -E' 1s / node_id / node_id:ID /' $文件 完成
节点的标签也未设置。可以直接在命令行中设置它们,如下所示:--nodes:MyLabel
如果在服务器重新启动时对Neo4j进行查询,则可能会收到错误,因为服务器尚未就绪。这就是为什么我最后添加sleep 5
的原因。
一个更好的方法是等到你从服务器得到这样的响应:
直到$(curl --output / dev / null --silent --head --fail http://localhost:7474);做 printf'。' 睡觉1 完成
最后一点,我不知道为什么,但如果你在容器内重新启动neo4j,你将看不到导入的数据。但是如果你重新启动容器本身就可以......