本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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[] -
邊緣屬性只能有一個值,如果指定了陣列類型或指定了第二個值,會導致錯誤。下列範例顯示名稱為 Int 類型存留期屬性的資料欄標頭:
age:Int
檔案中的每個資料列在該位置都必須有一個整數或保留空白。允許字串陣列,但陣列中的字串不能包含分號 (;) 字元,除非使用反斜線 () 逸出\;。
支援的 CSV 資料欄類型
BOOL (或 BOOLEAN) - 允許的值:true、false。表示布林值欄位。非 true 的任何值都會視為 false。
FLOAT - 範圍:32 位元 IEEE 754 浮點,包括 Infinity、INF、-Infinity、-INF 和 NaN not-a-number)。
DOUBLE - 範圍:64 位元 IEEE 754 浮點,包括 Infinity、INF、-Infinity、-INF 和 NaN not-a-number)。
STRING -
引號是選用的。如果逗號、換行和換行字元包含在以雙引號 (") 括住的字串中,則會自動逸出。範例:「Hello, World」。
若要在引號字串中包含引號,您可以連續使用兩個 來逸出引號:範例:「Hello ""World""」。
允許字串陣列,但陣列中的字串不能包含分號 (;) 字元,除非使用反斜線 (\;) 逸出。
如果您要使用引號包圍陣列中的字串,您必須以一組引號包圍整個陣列。範例:「字串一;字串 2;字串 3」。
DATE、DATETIME - 日期時間值可以 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【+|-】hhmm
yyyy-MM-ddTHH:mm:ss.SSS【+|-】hhmm
已簽署整數 -
位元組:-128 到 127
短:-32768 至 32767
整數:-2^31 到 2^31-1
長:-2^63 到 2^63-1
Neptune 特定的欄類型:
資料欄類型 使用者資料欄中支援任何 。任何類型都是我們支援的所有其他類型的「語法糖」類型。如果使用者資料欄包含多種類型,這非常有用。Any type value 的承載是 json 字串的清單,如下所示:
{"value": "10", "type": "Int"};{"value": "1.0", "type": "Float"},每個個別 json 字串中都有一個值欄位和一個類型欄位。Any 類型的資料欄標頭是 propertyname:Any。已設定任何資料欄的基數值,表示該資料欄可接受多個值。Neptune 支援任何類型的下列類型:Bool (或布林值)、Byte、Short、Int、Long、UnsignedByte、UnsignedShort、UnsignedInt、UnsignedLong、Float、Double、Date、dateTime、String 和 Geometry。
任何類型都不支援向量類型。
巢狀 不支援任何類型。例如
{"value": {"value": "10", "type": "Int"}, "type": "Any"}。
使用者資料欄中支援幾何資料欄類型。這些資料欄的承載只能包含 Point 類型的幾何基本概念,以已知文字 (WKT) 格式的字串提供。例如,POINT (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)