本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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)