我需要从命令行对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)。我需要脚本来对它执行查询。
注意:为了整洁,这是original question的分割。
答案 0 :(得分:2)
好的,我今天刚刚发布了一个新的Neo4j-community-3.1.1实例,遇到了完全相同的问题。请注意,我已经使用批量导入工具创建了一个数据库,因此在使用shell之前,可能需要为数据库(mkdir data/databases/graph.db
)创建一个目录。
我相信您的问题可能是您有一个针对您尝试访问的数据库运行的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和服务器,但显然情况并非如此。如果我错了,希望有人会纠正我。
答案 1 :(得分:1)
要在neo4j服务器运行时从文件执行(一个或多个)Cypher语句,您可以使用APOC过程apoc.cypher.runFile(file or url)。
由于您提到“批量计划”,Job management and periodic execution APOC程序可能会有所帮助。反过来,这些程序可以执行对apoc.cypher.runFile
的调用。