我已经使用Neo4j好几个月了,我感到非常恼火。 似乎每个新版本都会打破前一个版本。 我有多个Cypher Load脚本,我无法再通过命令行运行。
我可以在浏览器中运行以下命令:
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:///person.csv" AS csvLine
MERGE (p:Person {sysurn : csvLine.urn})
ON CREATE SET p.dob = trim(csvLine.dob)
ON CREATE SET p.forename = trim(csvLine.forename)
ON CREATE SET p.surname = trim(csvLine.surname );
以前在3.0.3版(社区版)中,我运行了以下内容:
java -cp "C:\Program Files\Neo4j CE 3.0.3\bin\neo4j-desktop-3.0.3.jar" org.neo4j.shell.StartClient -file "D:/nosql/Load data/load_person.cql"
这不再适用于3.1.1:
java -cp "C:\Program Files\Neo4j CE 3.1.1\bin\neo4j-desktop-3.1.1.jar" org.neo4j.shell.StartClient -file "D:/nosql/Load data/load_person.cql"
我收到了Java错误。普遍的共识是运行完整的.tar版本,所以我安装了它。
我现在可以从浏览器或使用cypher-shell运行Cypher。但是这没用,因为没有办法调用外部脚本,所以我必须为可能数百个脚本执行此操作。
建议使用ne04j-shell(现已弃用!) 我试试neo4j-shell。这不会接受路径中的空格!
我移动文件并尝试运行以下内容:
"C:\Program Files\neo4j-community-3.1.1\bin\neo4j-shell" -path "D:/nosql/neoDB/databases/graph.db" -config "neo4j.conf" -file "D:/nosql/Loaddata/load_person.cql"
我收到以下错误:
ERROR (-v for expanded information): Error starting org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory,
d:\ nosql的\ neoDB \数据库\ graph.db
我尝试了各种组合,包括根据提示添加主机名:
non-JRMP server at remote endpoint
我尝试添加-config参数,但这又不允许使用空格!
对于每个新版本,实际上将数据导入Neo4j似乎更加困难。
我的问题是,3.1.1版本是否有可能一次运行多个cypher脚本而无需手动运行每个脚本? 是否可以在3.1.1版本中使用neo4j-shell?
答案 0 :(得分:0)
尝试使用cypher-shell
中的APOC程序apoc.cypher.runFile。以下是一个示例(使用针对Windows格式化的file
网址):
CALL apoc.cypher.runFile("file:d:/nosql/Load data/load_person.cql");
如果路径中的空间仍然存在问题,您可以将“加载数据”文件夹重命名为“LoadData”并相应地修改上述查询。
答案 1 :(得分:0)
好吧,我找到了解决方法。
e.g。 java -cp“C:\ Program Files \ Neo4j CE 3.0.8 \ bin \ neo4j-desktop-3.0.8.jar“org.neo4j.shell.StartClient -file”D:/ nosql / Load data / load_person.cql“
我不认为这会在生产环境中削减它,但是:)