我有一个Cypher脚本文件,我想直接运行它。根据我所知,在SO上找到的所有答案都使用命令neo4j-shell,但在我的版本(Neo4j server 3.5.5)中似乎被弃用并替换为命令cyphershell。通过使用命令sudo ./neo4j-community-3.5.5/bin/cypher-shell --help,我获得了以下说明。这是一个命令行shell,您可以针对Neo4j实例执行Cypher。默认情况下,shell是交互式的,但是您可以通过直接在命令行上传递Cypher或通过管道传递带有Cypher语句的文件(在Windows上需要PowerShell)来将其用于脚本。我的文件尝试从csv文件创建图形,它来自书籍“Graph Algorithms”。
当我尝试使用以下命令直接传递文件时:
WITH "https://github.com/neo4j-graph-analytics/book/raw/master/data" AS base
WITH base + "transport-nodes.csv" AS uri
LOAD CSV WITH HEADERS FROM uri AS row
MERGE (place:Place {id:row.id})
SET place.latitude = toFloat(row.latitude),
place.longitude = toFloat(row.latitude),
place.population = toInteger(row.population)
WITH "https://github.com/neo4j-graph-analytics/book/raw/master/data/" AS base
WITH base + "transport-relationships.csv" AS uri
LOAD CSV WITH HEADERS FROM uri AS row
MATCH (origin:Place {id: row.src})
MATCH (destination:Place {id: row.dst})
MERGE (origin)-[:EROAD {distance: toInteger(row.cost)}]->(destination)
当我尝试使用以下命令直接传递文件时:
sudo ./neo4j-community-3.5.5/bin/cypher-shell neo_4.cypher
首先它要求输入用户名和密码,但是在输入正确的密码后(输入错误的密码将导致错误The client is unauthorized due to authentication failure.
),我得到了以下错误:
Invalid input 'n': expected <init> (line 1, column 1 (offset: 0))
"neo_4.cypher"
^
当我尝试使用以下命令进行管道操作:
sudo cat neo_4.cypher| sudo ./neo4j-community-3.5.5/bin/cypher-shell -u usr -p 'pwd'
没有产生任何输出和图形。
如何使用neo4j命令cypher-shell
运行cypher脚本文件?
sudo ./neo4j-community-3.5.5/bin/cypher-shell "MATCH (n:Person) RETURN n LIMIT 25;"
这样的简单命令,我也需要使用sudo
,否则将没有输出生成。此外,您提供的例子sudo cypher-shell arguments_as_needed < neo_4.cypher
没有输出任何内容。 - roschachsudo
,但这不是问题。 - roschach