openCypher 数据的加载格式 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

openCypher 数据的加载格式

要使用 openCypher CSV 格式加载 openCypher 数据,必须在单独的文件中指定节点和关系。加载程序可以在单个加载任务中从多个节点文件和关系文件中加载。

对于每个加载命令,要加载的文件集在 Amazon Simple Storage Service 桶中必须具有相同的路径前缀。您可以在源参数中指定该前缀。实际的文件名和扩展名不重要。

在 Amazon Neptune 中,openCypher CSV 格式符合 RFC 4180 CSV 规范。有关更多信息,请参阅 Internet Engineering Task Force (IETF) 网站上的 CSV 文件的一般格式和 MIME 类型 (https://tools.ietf.org/html/rfc4180)。

注意

这些文件必须采用 UTF-8 格式编码。

每个文件都有一个以逗号分隔的标题行,其中包含系统列标题和属性列标题。

openCypher 数据加载文件中的系统列标题

给定的系统列在标题中只能出现一次。所有系统列标题标签均区分大小写。

openCypher 节点加载文件和关系加载文件所需的和允许的系统列标题不同:

节点文件中的系统列标题

  • :ID –(必需)节点的 ID。

    可以在节点 :ID 列标题中添加可选的 ID 空间,例如::ID(ID Space)。例如,:ID(movies)

    加载连接此文件中节点的关系时,请在关系文件的 :START_ID 和/或 :END_ID 列中使用相同的 ID 空间。

    可以选择将节点 :ID 列存储为采用 property name:ID 格式的属性。例如,name:ID

    在当前和之前加载的所有节点文件中,节点 ID 应是唯一的。如果使用 ID 空间,则在当前和之前的加载中使用相同 ID 空间的所有节点文件中,节点 ID 应是唯一的。

  • :LABEL – 节点的标签。

    允许使用多个标签值,用分号 (;) 分隔。

关系文件中的系统列标题

  • :ID – 关系的 ID。当 userProvidedEdgeIds 为 true(默认)时,这是必需的,但当 userProvidedEdgeIdsfalse 时,则无效。

    在当前和之前加载的所有关系文件中,关系 ID 应是唯一的。

  • :START_ID –(必需)此关系的起始节点的节点 ID。

    或者,ID 空间可以与格式为 :START_ID(ID Space) 的起始 ID 列相关联。分配给起始节点 ID 的 ID 空间应与在节点文件中分配给该节点的 ID 空间相匹配。

  • :END_ID –(必需)此关系的结束节点的节点 ID。

    或者,ID 空间可以与格式为 :END_ID(ID Space) 的结束 ID 列相关联。分配给结束节点 ID 的 ID 空间应与在其节点文件中分配给该节点的 ID 空间相匹配。

  • :TYPE – 关系的类型。关系只能有单一类型。

注意

有关批量加载过程如何处理重复的节点 ID 或关系 ID 的信息,请参阅加载 openCypher 数据

openCypher 数据加载文件中的属性列标题

您可以使用以下格式的属性列标题来指定某一列包含特定属性的值:

propertyname:type

列标题中不允许使用空格、逗号、回车符和换行符,因此属性名称不能包含这些字符。以下是名为 age 且类型为 Int 的属性的列标题示例:

age:Int

然后,age:Int 作为列标题的列必须在每行中包含一个整数或一个空值。

Neptune openCypher 数据加载文件中的数据类型

  • BoolBoolean – 布尔型字段。允许的值包括 truefalse

    true 之外的任何值都视为 false

  • Byte – 范围为 -128127 的整数。

  • Short – 范围为 -32,76832,767 的整数。

  • Int – 范围为 -2^312^31 - 1 的整数。

  • Long – 范围为 -2^632^63 - 1 的整数。

  • Float – 32 位 IEEE 754 浮点数。支持十进制记数法和科学记数法。可全部识别 Infinity-Infinity、和 NaN,但不识别 INF

    位数太多而无法容纳的值将四舍五入到最接近的值(对于位级别的最后一个剩余数字,中间值将舍入为 0)。

  • Double – 64 位 IEEE 754 浮点数。支持十进制记数法和科学记数法。可全部识别 Infinity-Infinity、和 NaN,但不识别 INF

    位数太多而无法容纳的值将四舍五入到最接近的值(对于位级别的最后一个剩余数字,中间值将舍入为 0)。

  • String – 引号是可选的。如果双引号 (") 括起来的字符串中包含逗号字符、换行符和回车符(如 "Hello, World"),则将自动对这些字符进行转义。

    您可以通过连续使用两个引号在带引号的字符串中加入引号,比如 "Hello ""World"""

  • DateTime – 采用以下 ISO-8601 格式之一的 Java 日期:

    • yyyy-MM-dd

    • yyyy-MM-ddTHH:mm

    • yyyy-MM-ddTHH:mm:ss

    • yyyy-MM-ddTHH:mm:ssZ

Neptune openCypher 数据加载文件中的自动转换数据类型

提供自动转换数据类型是为了加载 Neptune 目前原生不支持的数据类型。此类列中的数据以字符串形式存储,逐字存储,无需根据其预期格式进行验证。允许使用以下自动转换数据类型:

  • CharChar 字段。存储为字符串。

  • DateLocalDateLocalDateTime – 有关 datelocaldatelocaldatetime 类型的描述,请参阅 Neo4j 瞬时。这些值作为字符串逐字加载,无需验证。

  • Duration – 请参阅 Neo4j 持续时间格式。这些值作为字符串逐字加载,无需验证。

  • – 用于存储空间数据的点字段。请参阅空间瞬时。这些值作为字符串逐字加载,无需验证。

openCypher 加载格式示例

下图取自 M TinkerPop odern Graph,显示了两个节点和一个关系的示例:

两个节点以及它们之间关系的示意图。

以下是正常的 Neptune openCypher 加载格式的图形。

节点文件:

:ID, name:String, age:Int, lang:String, :LABEL v1, "marko", 29, , person v2, "lop", , "java", software

关系文件:

:ID, :START_ID, :END_ID, :TYPE, weight:Double e1, v1, v2, created, 0.4

或者,您可以使用 ID 空间和 ID 作为属性,如下所示:

第一个节点文件:

name:ID(person), age:Int, lang:String, :LABEL "marko", 29, , person

第二个节点文件:

name:ID(software), age:Int, lang:String, :LABEL "lop", , "java", software

关系文件:

:ID, :START_ID, :END_ID, :TYPE, weight:Double e1, "marko", "lop", created, 0.4