NEO4J 3.1.1加载CSV

时间:2017-02-22 22:32:15

标签: neo4j cypher neo4j-shell

我已经使用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?

2 个答案:

答案 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)

好吧,我找到了解决方法。

  • 安装neo4j 3.1.1
  • 创建数据库
  • 卸载Neo4j
  • 安装neo4j 3.0.8
  • 运行我的Cypher脚本
  

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“

  • 卸载neo4j
  • 安装neo4j 3.1.1

我不认为这会在生产环境中削减它,但是:)