2

我需要从命令行(出于批处理调度目的)对 Neo4J 数据库运行 Cypher 查询。

当我运行这个:

./neo4j-shell -file /usr/share/neo4j/scripts/query.cypher -path /usr/share/neo4j/neo4j-community-3.1.1/data/databases/graph.db

我收到此错误:

ERROR (-v for expanded information):
        Error starting org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory, /usr/share/neo4j/neo4j-community-3.1.1/data/databases/graph.db

该数据库上有一个正在运行的 Neo4J 实例 (localhost:7474)。我需要脚本来对它执行查询。

注意:为了整洁,这是对原始问题的拆分。

4

2 回答 2

3

好的,我今天刚刚启动了一个 Neo4j-community-3.1.1 的新实例,并遇到了完全相同的问题。请注意,我已经使用批量导入工具创建了一个数据库,因此mkdir data/databases/graph.db在使用 shell 之前可能需要为数据库创建一个目录 ( )。

我相信您的问题可能是您有一个 Neo4j 进程实例针对您尝试访问的数据库运行。

对我来说,关闭 Neo4j,然后使用显式路径启动 shell 是可行的:

cd /path/to/neo4j-community-3.1.1/
bin/neo4j stop ## assuming it is already running (may need a port specifier)
bin/neo4j-shell -path data/databases/graph.db

出于某种原因,我认为您可以同时运行 shell 和服务器,但显然情况并非如此。如果我错了,希望有人能纠正我。

于 2017-03-02T22:05:54.150 回答
2

要在 neo4j 服务器运行时从文件执行(一个或多个)Cypher 语句,可以使用 APOC 过程apoc.cypher.runFile( file or url )

由于您提到“批量调度”,作业管理和定期执行APOC 程序可能会有所帮助。反过来,这些过程可以执行对apoc.cypher.runFile.

于 2017-02-01T21:02:06.033 回答