【问题标题】:Using neo4j import tool with integer IDs使用带有整数 ID 的 neo4j 导入工具
【发布时间】:2016-04-14 17:22:53
【问题描述】:

我是 Neo4j 的新手,我正在尝试使用它的 import tool 将一堆旧数据导入新数据库。此数据的主 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)如果我必须这样做,它们是字符串是否有问题?这最终会产生一个包含约 1 亿个节点和关系的相当大的数据库,因此基于字符串比较来查找关系似乎是个坏主意。

【问题讨论】:

  • Neo4j 的原生 ID 是数字。您确定您使用的是本地 ID,还是使用您自己的 ID?你用的是什么neo4j驱动?此外,您应该知道依赖本机 ID 并不是一个好主意。正如the warning here 所说:“当节点和关系被删除时,Neo4j 会重用其内部 id。这意味着使用和依赖于 Neo4j 内部 id 的应用程序很脆弱或有出错的风险。而是使用应用程序生成的 id。”跨度>
  • 这些是我自己的 ID。它们来自我们现有关系数据库中的索引号。
  • 您使用的是什么语言和 neo4j 驱动程序?这似乎不是 neo4j 本身的问题,因为它可以存储整数属性。
  • 我知道它可以存储整数属性。 “other_prop:int”何时正确将该属性存储为整数。但我无法将其与将属性指定为 ID 结合起来。做 "my_id:ID:int" 和 " "my_id:int:ID" 不起作用。这是 2.3.2 版,带有 python 后端。
  • 请显示您的实际 Cypher 查询。

标签: neo4j graph-databases


【解决方案1】:

neo4j 导入工具的Command line usage 页面记录了这个命令行选项:

--id-type

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

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

默认选项是字符串。

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

【讨论】:

  • 如果您的所有节点都具有相同类型的 ID,这可以正常工作,但是如果某些节点具有整数 ID 而有些节点具有字符串 ID,该怎么做呢?
猜你喜欢
  • 2015-12-17
  • 1970-01-01
  • 2016-08-23
  • 2015-04-10
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多