我刚在mac上安装了neo4j 2.1.3(当前最新版本)。我通过bin neo4j start
启动了服务器,我可以通过localhost:7474
验证neo4j正在运行。然后我继续使用以下代码访问neo4j shell:
➜ bin neo4j-shell
Welcome to the Neo4j Shell! Enter 'help' for a list of commands
NOTE: Remote Neo4j graph database service 'shell' at port 1337
neo4j-sh (?)$ MATCH (n)
> OPTIONAL MATCH (n)-[r]-()
> DELETE n,r;
+--------------------------------------------+
| No data returned, and nothing was changed. |
+--------------------------------------------+
8946 ms
neo4j-sh (?)$ CREATE CONSTRAINT ON (w:Word) ASSERT w.value IS UNIQUE;
+--------------------------------------------+
| No data returned, and nothing was changed. |
+--------------------------------------------+
131 ms
neo4j-sh (?)$ USING PERIODIC COMMIT
Unknown command 'using'
neo4j-sh (?)$ LOAD CSV FROM
Unknown command 'load'
neo4j-sh (?)$ "file:/Users/code/Downloads/w2.txt" AS line FIELDTERMINATOR '\t'
Unknown command '"file:/users/code/downloads/w2.txt"'
neo4j-sh (?)$ MERGE (w1:Word { value: line[1] })
> MERGE (w2:Word { value: line[2] })
> CREATE (w1)-[:LINK { value : toInt(line[0])} ]->(w2);
SyntaxException: line not defined (line 1, column 25)
"MERGE (w1:Word { value: line[1] })"
我正在尝试创建一个bigrams图表,csv文件包含一个单词列表。我首先删除当前数据,以便我可以从.csv文件创建一个干净的数据库。这有效。然后我创建一个约束,使所有单词都是唯一的。到现在为止还挺好。
但是对于导入它似乎并不能识别docs中明确定义的命令。
我做错了什么?
---编辑1 ---
我认为内部可能存在问题。即使我从(docs)[http://docs.neo4j.org/chunked/stable/cypherdoc-importing-csv-files-with-cypher.html]复制代码,它也会给我错误。
代码的
LOAD CSV WITH HEADERS FROM "http://docs.neo4j.org/chunked/2.1.3/csv/import/persons.csv" AS csvLine
CREATE (p:Person { id: toInt(csvLine.id), name: csvLine.name })
错误的
➜ neo4j-v2.1.3 ./bin/neo4j-shell
Welcome to the Neo4j Shell! Enter 'help' for a list of commands
NOTE: Remote Neo4j graph database service 'shell' at port 1337
neo4j-sh (?)$ LOAD CSV WITH HEADERS FROM "http://docs.neo4j.org/chunked/2.1.3/csv/import/persons.csv" AS csvLine
Unknown command 'load'
neo4j-sh (?)$ CREATE (p:Person { id: toInt(csvLine.id), name: csvLine.name })
> ;
SyntaxException: Unknown function 'toInt' (line 1, column 24)
"CREATE (p:Person { id: toInt(csvLine.id), name: csvLine.name })"
---编辑2 ---
之前的错误促使我进行了全新的安装,这显示出一些更奇怪的东西。此脚本现在可以在neo4j-shell
中正常运行;
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r;
CREATE CONSTRAINT ON (w:Word) ASSERT w.value IS UNIQUE;
USING PERIODIC COMMIT
LOAD CSV FROM
"file:/Users/code/Downloads/w2.txt"
AS line
FIELDTERMINATOR '\t'
MERGE (w1:Word { value: toString(line[1]) })
MERGE (w2:Word { value: toString(line[2]) })
CREATE (w1)-[:LINK { value : toInt(line[0])} ]->(w2);
但是当它完成运行后,我发现neo4j服务器已关闭/崩溃。当我neo4j start
或neo4j restart
服务器时,我再次遇到与以前相同的错误。
最终修改
事实证明$ neo4j
启动了neo4j版本,但之前已删除。对其他人的提示,请务必确保使用安装文件夹中的$ bin/neo4j start
和$ bin/neo4j-shell
。不要假设$ neo4j start
或$ neo4j-shell
始终有效。这里出了什么问题,我启动了一个错误的服务器版本,但是一个正确的shell版本。这两个人无法与彼此很好地交流。
答案 0 :(得分:2)
也许这是一个版本问题?即你安装了旧版本的Neo4j吗? 也许它弄乱了路径?尝试清除所有neo4j安装(在磁盘上搜索neo4j的文件名)并尝试重新开始?
还要检查Neo4j是否没有启动 - 守护程序脚本。
如何确定您的服务器已崩溃第二个脚本?也许还要检查data / log / *和data / graph.db / messages.log
中的日志文件答案 1 :(得分:0)
您应该或开始您的交易(请参阅此处:http://docs.neo4j.org/chunked/stable/shell-commands.html#_example_dump_scripts
或者使用您的语句创建Import .cql文件,并在运行shell时指定该文件。
例如import.cql文件:
CREATE CONSTRAINT ON (n:Node) assert n.id IS UNIQUE;
USING PERIODIC COMMIT 500
LOAD CSV WITH HEADERS FROM FILE "file:///path-to-your-file" AS csv
CREATE (n:Node {id:toInt(csv.id)})
然后使用shell执行import.cql语句:
// This assumes that the import.cql file is located in your Neo4j install dir
./bin/neo4j-shell -file import.cql
这是我刚刚在正在运行的测试数据库上执行的结果:
absoluttly:graphdb ikwattro$ ./bin/neo4j-shell -file import.cql
+-------------------+
| No data returned. |
+-------------------+
Constraints added: 1
200 ms
+-------------------+
| No data returned. |
+-------------------+
Nodes created: 1
Properties set: 1
Labels added: 1
41 ms
以下是一些有用的链接:
http://www.neo4j.org/graphgist?d788e117129c3730a042 http://jexp.de/blog/2014/06/using-load-csv-to-import-git-history-into-neo4j/