View a markdown version of this page

使用 CSV 查询示例 - Amazon Neptune

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

使用 CSV 查询示例

在此示例中,查询返回给定 CSV 文件中的行数:

CALL neptune.read( { source: "<s3 path>", format: "csv" } ) YIELD row RETURN count(row)

您可以通过执行以下代码,使用中的 execute-open-cypher-query操作 AWS CLI 来运行查询示例:

aws neptunedata execute-open-cypher-query \ --open-cypher-query "CALL neptune.read({source: '<s3 path>', format: 'csv'}) YIELD row RETURN count(row)" \ --endpoint-url https://my-cluster-name.cluster-abcdefgh1234.us-east-1.neptune.amazonaws.com:8182

查询可以灵活地处理从 CSV 文件中读取的行。例如,以下查询创建了一个节点,其字段设置为 CSV 文件中的数据:

CALL neptune.read( { source: "<s3 path>", format: "csv" } ) YIELD row CREATE (n {someField: row.someCol}) RETURN n
警告

在 CALL 子句之前使用像 MATCH (n) 这样的大型结果生成子句不被视为良好做法。由于来自先前子句的传入解决方案与 neptune.read 读取的行之间存在交叉积,这将导致查询长时间运行。建议使用 CALL neptune.read 开始查询。

属性列标题

可通过使用以下语法指定属性的列 (:)。类型名称不区分大小写。如果属性名称中出现冒号,则必须在其前面加上反斜杠:。\:

propertyname:type
注意
  • 不允许在列标题中使用空格、逗号、回车和换行符,因此属性名称不得包含这些字符。

  • 您可以通过将 [] 添加到类型来指定数组列:

    propertyname:type[]
  • 边缘属性只能有一个值,如果指定了数组类型或指定了另一个值,则会导致错误。以下示例显示了名为 age 且类型为 Int 的属性的列标题:

    age:Int

文件中的每行都需要在该位置具有整数或保留为空。允许使用字符串数组,但是数组中的字符串不能包含分号 (;) 字符,除非使用反斜杠 () 对其进行转义。\;

支持的 CSV 列类型

  • BOOL(或布尔值)-允许的值:真、假。指示 Boolean 字段。除 true 之外的任何值都将被视为假。

  • FLOAT-范围:32 位 IEEE 754 浮点数,包括 Infinity、INF、-Infinity、-INF 和 NaN ()。not-a-number

  • 双精度-范围:64 位 IEEE 754 浮点数,包括 Infinity、INF、-Infinity、-INF 和 NaN ()。not-a-number

  • 字符串-

    • 引号是可选的。如果逗号、换行符和回车符包含在由双引号 (“) 包围的字符串中,则会自动对其进行转义。示例:“你好,世界”。

    • 要在带引号的字符串中包含引号,可以连续使用两个引号来转义引号:示例:“Hello “" World ""””。

    • 允许使用字符串数组,但是数组中的字符串不能包含分号 (;) 字符,除非使用反斜杠 (\;) 对其进行转义。

    • 如果要使用引号将数组内的字符串括起来,则必须使用一组引号将整个数组括起来。示例:“字符串一;字符串 2;字符串 3”。

  • 日期、日期时间-日期时间值可以采用 XSD 格式或以下格式之一提供:

    • yyyy-MM-dd

    • yyyy-mm-ddthh: mm

    • yyyy-mm-ddthh: mm: ss

    • yyyy-mm-ddthh: mm: ssz

    • yyyy-mm-ddthh: mm: ss.sssz

    • yyyy-mm-ddthh: mm: ss [+|-] 嗯嗯

    • yyyy-mm-ddthh: mm: ss.sss [+|-] 嗯嗯

  • 有@@ 符号整数-

    • 字节:-128 到 127

    • 空头:-32768 至 32767

    • Int:-2^31 到 2^31-1

    • 长:-2^63 到 2^63-1

海王星特有的柱子类型:

  • 用户列中支持 “任意” 列类型。Any 类型是我们支持的所有其他类型的 “句法糖” 类型。如果用户列中有多种类型,则它非常有用。Any type 值的有效负载是一个 json 字符串列表,如下所示:{"value": "10", "type": "Int"};{"value": "1.0", "type": "Float"},它在每个 json 字符串中都有一个值字段和一个类型字段。“任意” 类型的列标题是属性名称:any。已设置 “任意” 列的基数值,这意味着该列可以接受多个值。

    • Neptune 在 Any 类型中支持以下类型:布尔型(或布尔型)、字节、短整型、长整型、、、、、 UnsignedByte UnsignedShort、浮点型 UnsignedInt UnsignedLong、双精度、日期、日期时间、日期时间、字符串和几何。

    • 任何类型都不支持向量类型。

    • 嵌套不支持任何类型。例如 {"value": {"value": "10", "type": "Int"}, "type": "Any"}

  • 用户列支持几何列类型。这些列的有效载荷只能包含 Point 类型的几何基元,这些基元以众所周知文本 (WKT) 格式的字符串形式提供。例如,点 (30 10) 将是有效的几何值。

CSV 输出示例

给出以下 CSV 文件:

<s3 path> colA:byte,colB:short,colC:int,colD:long,colE:float,colF:double,colG:string -128,-32768,-2147483648,-9223372036854775808,1.23456,1.23457,first 127,32767,2147483647,9223372036854775807,nan,nan,second 0,0,0,0,-inf,-inf,third 0,0,0,0,inf,inf,fourth

此示例显示了 neptune.read 使用以下查询返回的输出:

aws neptunedata execute-open-cypher-query \ --open-cypher-query "CALL neptune.read({source: '<s3 path>', format: 'csv'}) YIELD row RETURN row" \ --endpoint-url https://my-cluster-name.cluster-abcdefgh1234.us-east-1.neptune.amazonaws.com:8182
{ "results": [{ "row": { "colD": -9223372036854775808, "colC": -2147483648, "colE": 1.23456, "colB": -32768, "colF": 1.2345699999999999, "colG": "first", "colA": -128 } }, { "row": { "colD": 9223372036854775807, "colC": 2147483647, "colE": "NaN", "colB": 32767, "colF": "NaN", "colG": "second", "colA": 127 } }, { "row": { "colD": 0, "colC": 0, "colE": "-INF", "colB": 0, "colF": "-INF", "colG": "third", "colA": 0 } }, { "row": { "colD": 0, "colC": 0, "colE": "INF", "colB": 0, "colF": "INF", "colG": "fourth", "colA": 0 } }] }

目前,无法为来自 CSV 文件的数据字段设置节点或边缘标签。建议您将查询分成多个查询,每个查询对应一个标签/类型。

CALL neptune.read({source: '<s3 path>', format: 'csv'}) YIELD row WHERE row.`~label` = 'airport' CREATE (n:airport) CALL neptune.read({source: '<s3 path>', format: 'csv'}) YIELD row WHERE row.`~label` = 'country' CREATE (n:country)