Neo4j 2.0转储与双重类型

时间:2014-01-03 14:22:06

标签: neo4j dump

在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)     
...

1 个答案:

答案 0 :(得分:1)

在java中,科学记数法一般不会解析为双精度数。 Here's a related forum posting describing how to use DecimalFormat to fix the issue

我认为最重要的是,你给cypher的不是一个双重的,而是一个字符串,因为你没有在字符串周围加上引号,它就会死亡。你需要在那里给它一个有效的数字格式。