使用neo4j导入工具与整数ID一起使用

4
我是一名新手,想使用导入工具将一些旧数据导入到新数据库中。这些数据的主要ID将是整数。然而,节点的:ID属性似乎默认为字符串类型?我知道我可以在其他属性上使用:int使它们成为整数类型,但似乎无法与:ID组合使用。
例如,这里是节点类型1:
node1_int_id:ID(node1)|other_prop|another_prop
12345                 |foo       |bar

节点类型 2:
node2_int_id:ID(node2)|other_prop|another_prop
67890                 |foo       |bar

和关系

:START_ID(node1)      |:END_ID(node2)
12345                 |67890

这看起来可行,但结果是基于两个字符串类型字段的关系。所以我猜我有两个问题:
1)我做得对吗?有没有什么方法可以将ID字段变成整数?
2)如果我必须这样做,它们是字符串是否会成为问题?这最终将导致一个相当大的数据库,约有100万个节点和关系,因此似乎不应该基于字符串比较查找关系。

Neo4j的本地ID是数字。您确定您正在使用本地ID,还是使用自己的ID?您使用的是哪个neo4j驱动程序?此外,您应该知道依赖于本机ID不是一个好主意。如此处的警告所述:“当节点和关系被删除时,Neo4j会重用其内部ID。这意味着使用并依赖于内部Neo4j ID 的应用程序是脆弱的或有犯错的风险。最好使用应用程序生成的ID。” - cybersam
这些是我的独有ID。它们来自于我们现有关系型数据库中的索引号码。 - glorkvorn
我知道它可以存储整数属性。当使用"other_prop:int"时,它会正确地将该属性存储为整数。但是我无法将其与指定属性作为ID的设计相结合。使用"my_id:ID:int"和"my_id:int:ID"都不起作用。这是2.3.2版本,使用Python后端。 - glorkvorn
请展示您实际的Cypher查询。 - cybersam
这个问题涉及到导入工具,这是至关重要的信息,应该在问题中加以说明。我已经添加了这个信息。 - cybersam
显示剩余3条评论
1个回答

2

neo4j导入工具的命令行使用页面记录了以下命令行选项:

--id-type <id-type>

其中之一为[STRING, INTEGER, ACTUAL],并指定如何处理节点/关系输入文件中的ID。

STRING:用于标识节点的任意字符串。INTEGER:用于标识节点的任意整数值。ACTUAL:(高级)实际节点ID。

默认选项为STRING。

因此,在运行导入工具时应在命令行上指定--id-type INTEGER


2
如果所有节点都具有相同类型的ID,则此方法可以正常工作,但是如果某些节点具有整数ID而另一些节点具有字符串ID,该怎么办? - Matt Holtzman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接