neo4j clean install在导入时无法识别'using','load'

时间:2014-08-09 07:01:51

标签: csv upload neo4j

我刚在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 startneo4j restart服务器时,我再次遇到与以前相同的错误。

最终修改

事实证明$ neo4j启动了neo4j版本,但之前已删除。对其他人的提示,请务必确保使用安装文件夹中的$ bin/neo4j start$ bin/neo4j-shell。不要假设$ neo4j start$ neo4j-shell始终有效。这里出了什么问题,我启动了一个错误的服务器版本,但是一个正确的shell版本。这两个人无法与彼此很好地交流。

2 个答案:

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