本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Gremlin 載入資料格式
若要使用 CSV 格式載入 Apache TinkerPop Gremlin 資料,您必須在單獨的檔案中指定點和邊。
載入器可在單一載入工作中,從多點和多邊檔案進行載入。
對於每個載入命令,要載入的檔案集在 Amazon S3 儲存貯體中必須位於同一資料夾,而且您會為 source
參數指定資料夾名稱。檔案名稱和副檔名不重要。
Amazon Neptune CSV 格式遵循 RFC 4180 CSV 規格。如需詳細資訊,請參閱 Internet Engineering Task Force (IETF) 網站上的 Common Format and MIME Type for CSV Files
注意
所有檔案都必須以 UTF-8 格式編碼。
每個檔案都有以逗號分隔的標頭資料列。此標頭資料列包含系統欄標題和屬性欄標頭。
系統欄標題
頂點檔案和邊緣檔案的必要和允許的系統欄標頭是不同的。
每個系統欄只能在標頭中出現一次。
所有標籤皆區分大小寫。
頂點標頭
-
~id
- 必要頂點的 ID。
-
~label
頂點的標籤。允許多個標籤值,以分號 (
;
) 分隔。如果
~label
不存在,TinkerPop 會提供值為vertex
的標籤,因為每個頂點必須至少有一個標籤。
邊緣標頭
-
~id
- 必要邊緣的 ID。
-
~from
- 必要從頂點的頂點 ID。
-
~to
- 必要至頂點的頂點 ID。
-
~label
邊緣的標籤。邊緣只能有一個標籤。
如果
~label
不存在,TinkerPop 會提供值為edge
的標籤,因為每個邊緣必須具有一個標籤。
屬性欄標題
您可以使用以下語法指定屬性欄 (:
)。類型名稱不區分大小寫。不過,請注意,如果屬性名稱內出現冒號,則必須在其前面加上反斜線來逸出冒號:\:
。
propertyname
:type
注意
欄標頭中不允許空格、逗號、換行字元和換行字元,因此屬性名稱不能包含這些字元。
您可以透過將 []
新增至類型,來為陣列類型指定一個欄:
propertyname
:type
[]
注意
邊緣屬性只能有一個值,如果指定了陣列類型或指定了第二個值,會導致錯誤。
以下範例顯示名為 age
的 Int
類型屬性的欄標頭。
age:Int
檔案中的每個資料列在該位置都必須有一個整數或保留空白。
允許字串陣列,但陣列中的字串不能包含分號 (;
) 字元,除非使用反斜線將其逸出 (像這樣:\;
)。
指定欄的基數
從 版本 1.0.1.0.200366.0 (2019 年 7 月 26 日) 開始,欄標頭可用來指定依欄識別之屬性的「基數」。這可讓大量載入器遵守 Gremlin 查詢執行的基數相似性。
您指定的欄基數類似這樣:
propertyname
:type
(cardinality
)
基數
值可以是 single
或 set
。預設值假設為 set
,這表示欄可接受多個值。如果是邊緣檔案,基數一律為一個,指定任何其他基數會導致載入器擲出例外狀況。
如果基數是 single
,則當載入一或多個值時,若已有舊值,載入器會拋出錯誤。您可以覆寫這種行為,使用 updateSingleCardinalityProperties
標記,讓載入的新值取代現有的值。請參閱 載入器命令。
您可以使用基數設定與陣列類型,但這通常沒必要。以下是可能的組合:
name:type
– 基數為set
,且內容為單一值。name:type[]
– 基數為set
,且內容為多值。name:type(single)
– 基數為single
,且內容為單一值。name:type(set)
– 基數為set
,與預設值相同,且內容為單一值。name:type(set)[]
– 基數為set
,且內容為多值。name:type(single)[]
– 這是矛盾的且會導致擲回錯誤。
下節列出所有可用的 Gremlin 資料類型。
Gremlin 資料類型
這是一個允許的屬性類型清單及每個類型的描述。
布林 (或布林值)
表示布林值欄位。允許的值:false
、true
注意
所有 true
以外的值會被視為 false。
整數類型
超出定義範圍的值將導致錯誤。
Type | 範圍 |
---|---|
Byte | -128 to 127 |
Short | -32768 to 32767 |
Int | -2^31 to 2^31-1 |
Long | -2^63 to 2^63-1 |
小數類型
支援小數符號或科學符號。此外,允許符號,例如 (+/-) Infinity 或 NaN。不支援 INF。
Type | 範圍 |
---|---|
Float | 32-bit IEEE 754 floating point |
Double | 64-bit IEEE 754 floating point |
浮點數和雙精確度值過長,將四捨五入到最接近 24 位元 (float) 和 53 位元 (double) 精確度的值並載入。位元層級的剩餘數中段值將四捨五入為 0。
字串
引號是選用的。逗號、新行及換行字元如果包含在由雙引號 ("
) 包圍的字串中,將會自動逸出。範例:"Hello,
World"
若要在引號字串中包含引號,您可以在同一列使用兩個引號以逸出引號,例如:"Hello
""World"""
允許字串陣列,但陣列中的字串不能包含分號 (;
) 字元,除非使用反斜線將其逸出 (像這樣:\;
)。
如果您要使用引號包圍陣列中的字串,您必須以一組引號包圍整個陣列。範例:"String one; String 2; String 3"
日期
ISO-8601 格式的 Java 資料。支援下列格式:yyyy-MM-dd
、yyyy-MM-ddTHH:mm
、yyyy-MM-ddTHH:mm:ss
、yyyy-MM-ddTHH:mm:ssZ
。這些值會轉換為 epoch 時間並儲存。
日期時間
ISO-8601 格式的 Java 資料。支援下列格式:yyyy-MM-dd
、yyyy-MM-ddTHH:mm
、yyyy-MM-ddTHH:mm:ss
、yyyy-MM-ddTHH:mm:ssZ
。這些值會轉換為 epoch 時間並儲存。
Gremlin 列格式
分隔符號
列中的欄位以逗號分隔。記錄以新行或新行後接換行符號加以分隔。
空白欄位
非必要欄允許使用空白欄位 (例如,使用者定義的屬性)。空白欄位仍然需要逗號分隔符號。必要資料欄上的空白欄位將導致剖析錯誤。空白字串值會解譯為欄位的空白字串值;而非空白欄位。下一節的範例在每個案例頂點中皆有空白欄位。
頂點 ID
~id
值必須是每個頂點檔案的所有頂點中的唯一值。具有相同 ~id
值的多個頂點列將套用至圖形中的單一頂點。空字串 (""
) 是有效的 ID,而頂點是以空字串做為 ID 來建立。
邊緣 ID
此外,~id
值必須是每個邊緣檔案的所有邊緣中的唯一值。具有相同 ~id
值的多個邊緣列將套用至圖形中的單一邊緣。空字串 (""
) 是有效的 ID,而邊緣是以空字串做為 ID 建立。
標籤
標籤區分大小寫,不能空白。的值""
將導致錯誤。
字串值
引號是選用的。逗號、新行及換行字元如果包含在由雙引號 ("
) 包圍的字串中,將會自動逸出。空白字串值("")
會解譯為 欄位的空白字串值,而不是空白欄位。
CSV 格式規格
Neptune CSV 格式遵循 RFC 4180 CSV 規格,包括以下需求。
支援 Unix 和 Windows 樣式的行尾 (\n 或 \r\n)。
任何欄位皆可使用引號 (使用雙引號)。
內含分行符號、雙引號或逗號的欄位必須加上引號。(否則,將立即中止載入。)
欄位中的雙引號字元 (
"
) 必須由兩個 (雙) 引號字元呈現。例如,Hello "World"
字串在資料中必須以"Hello ""World"""
呈現。分隔符號前後的空格將被忽略。如果資料列以 形式存在
value1, value2
,則會將其儲存為"value1"
和"value2"
。任何其他逸出字元將逐字儲存。例如,
"data1\tdata2"
將儲存為"data1\tdata2"
。這些字元只要括在引號中,就不需要逸出。允許空白欄位。空白欄位會視為空的值。
欄位中的多個值可在值之間使用分號 (
;
) 加以指定。
如需詳細資訊,請參閱 Internet Engineering Task Force (IETF) 網站上的 Common Format and MIME Type for CSV Files
Gremlin 範例
下圖顯示取自 TinkerPop Modern Graph 包含兩個頂點及一個邊緣的範例。

以下是 Neptune CSV 載入格式的圖形。
頂點檔案:
~id,name:String,age:Int,lang:String,interests:String[],~label v1,"marko",29,,"sailing;graphs",person v2,"lop",,"java",,software
頂點檔案的表格式檢視:
~id | name:String | age:Int | lang:String | interests:String[] | ~label |
v1 | "marko" | 29 | ["sailing", "graphs"] | person | |
v2 | "lop" | "java" | software |
邊緣檔案:
~id,~from,~to,~label,weight:Double e1,v1,v2,created,0.4
邊緣檔案的表格式檢視:
~id | ~from | ~to | ~label | weight:Double |
e1 | v1 | v2 | created | 0.4 |
後續步驟
現在您對於載入格式已有更深入的了解,請參閱 範例:將資料載入至 Neptune 資料庫執行個體。