在Neo4j 2.0(社区)上,当我转储一个带有Double类型属性的节点的数据库时,我获得了一个科学记数法值的文件:ex 1.43524185E8
导入此文件时,neo4j-shell失败并显示以下错误:
Invalid input 'E': expected Digit, whitespace, '.', node labels, '[', "=~", IN, IS, '*', '/', '%', '^', '+', '-', '<', '>', "<=", ">=", '=', "<>", "!=", AND, XOR, OR, ',' or '}' (line 167, column 153)
"create (_30015:`organization`:`fr` {`capital`:1.43524185E8, })"
^
at org.neo4j.cypher.internal.compiler.v2_0.parser.CypherParser$$anonfun$parse$1.apply(CypherParser.scala:53)
at org.neo4j.cypher.internal.compiler.v2_0.parser.CypherParser$$anonfun$parse$1.apply(CypherParser.scala:43)
似乎没有正确解析Double类型。
用于转储db的命令:
$ neo4j-shell -c "dump" > ito3.graph
用于导入它们的命令(在空的graph.db中):
$ neo4j-shell -file ito3.graph
受影响财产的详情:
neo4j-sh (__value_deleted__,30015)$ ls -v
...
*capital =[1.43524185E8] (double)
...
答案 0 :(得分:1)
在java中,科学记数法一般不会解析为双精度数。 Here's a related forum posting describing how to use DecimalFormat to fix the issue。
我认为最重要的是,你给cypher的不是一个双重的,而是一个字符串,因为你没有在字符串周围加上引号,它就会死亡。你需要在那里给它一个有效的数字格式。