CSV數(shù)據(jù)文件格式
本文介紹需要導(dǎo)入至圖數(shù)據(jù)庫GDB實例的CSV數(shù)據(jù)文件格式。
背景信息
CSV數(shù)據(jù)文件遵循RFC 4180 CSV規(guī)范。更多信息,請參見CSV文件的一般格式和MIME類型。
所有文件必須采用UTF-8格式編碼。
注意事項
必須將點和邊分別放到單獨的文件。
說明加載程序可以在單個加載任務(wù)中加載多個點文件和多個邊文件。
每一個加載任務(wù)的加載文件集必須位于Bucket的同一文件夾中,不能使用文件名和文件擴展名來區(qū)分點文件和邊文件。
每個文件都包含一個逗號分隔的標題行,此標題行由系統(tǒng)列標題和屬性列標題組成。
標題行是數(shù)據(jù)文件的第一行,由
\n
或\r\n
結(jié)束,行內(nèi)不支持使用雙引號、換行符等特殊字符,除分隔符逗號(,)外的其余字符均被解析為標題內(nèi)容。
系統(tǒng)列標題
標題類型 | 參數(shù)/語法 | 是否必需 | 說明 |
點標題 |
| 是 | 點的ID。 |
| 是 | 點的標簽,只支持單個標簽。 | |
邊標題 |
| 是 | 邊的ID。 |
| 是 | 源點的點ID。 | |
| 是 | 目標點的點ID。 | |
| 是 | 邊的標簽,只支持單個標簽。 |
屬性列標題
屬性列為普通屬性時,您可以通過以下語法指定屬性列,類型名稱不區(qū)分大小寫。
propertyname:type
重要列標題中不允許使用空格,因此,屬性名稱也不能包含空格。
屬性不支持List數(shù)據(jù)類型,只能有一個值。
示例:指定名為
age
、類型為Int
的屬性的列標題。文件中的每行都需要在該位置具有整數(shù)或保留為空。
age:Int
屬性列為SET類型數(shù)據(jù)時,您可以使用以下幾種語法指定屬性列。
重要圖數(shù)據(jù)庫GDB中僅點支持SET屬性,邊不支持SET屬性,邊中設(shè)置了SET屬性均會導(dǎo)致錯誤。
#兼容默認格式,普通單值屬性。 propertyname:type #普通單值屬性 propertyname:type(single) #SET屬性,數(shù)據(jù)行中包含單值。 propertyname:type(set) #SET屬性,數(shù)據(jù)行中包含多值。 propertyname:type[] #SET屬性,數(shù)據(jù)行中包含多值。 propertyname:type(set)[]
行格式
項目 | 說明 |
分隔符 | 行中字段是用逗號分隔的,行間是用換行符( |
空白字段 | 非必需列(如用戶定義的屬性) 允許使用空白字段??瞻鬃侄稳孕枰禾柗指舴?。 |
頂點ID | 每個頂點文件中所有頂點的 |
邊ID | 每個邊文件中所有邊的 |
標簽 | 標簽是字符串類型,區(qū)分大小寫。 |
字符串值 | 引號是可選的,當包含逗號等特殊字符時需要使用雙引號("")括起來。 |
| SET屬性字段,表示數(shù)據(jù)字段是屬性 重要 覆蓋寫入一個SET屬性時,相當于追加一個屬性值。如果原來是一個普通屬性,更新后是一個SET屬性。 |
| SET屬性字段,表示數(shù)據(jù)字段是屬性 |
屬性覆蓋邏輯
原屬性邏輯 | 新屬性邏輯 | 結(jié)果 |
普通屬性 | 普通屬性 | 原屬性值被覆蓋,保留最后一次的寫入。 |
普通屬性 | SET屬性 | 更新后是SET屬性,原屬性值會合并成SET中的一個屬性值。 |
SET屬性 | SET屬性 | SET屬性追加,屬性值是并集。 |
SET屬性 | 普通屬性 | 更新后是一個普通屬性,屬性值是最后一次的寫入。 |
CSV文件格式規(guī)范
與SET屬性相關(guān)的格式規(guī)范具體如下:
SET屬性單值字段:保持與原解析格式一致,解析后的值是SET屬性的一個屬性值。
SET屬性數(shù)組字段:使用分號(;)分隔數(shù)組元素,例如整型數(shù)組字段
32;45;12
。SET屬性數(shù)組字段:可以使用雙引號("")將整個字段括起來,解析時會去掉字段前后的雙引號,例如整型數(shù)組字段
"32;45;12"
。SET屬性數(shù)組字段類型是字符串:單個數(shù)組元素不能包含有分號(;)字符,會被解析成元素分隔符。
數(shù)據(jù)類型
屬性值類型 | 字段類型 | 取值范圍 |
Bool或Boolean | Boolean |
|
整數(shù) | char | -128 ~ 127 |
short | -32768 ~ 32767 | |
int | -2^31 ~ 2^31 -1 | |
long | -2^63 ~ 2^63 -1 | |
小數(shù) 說明 支持十進制計數(shù)法或科學(xué)計數(shù)法。不支持(+/-)INFINITY或NaN。 | float | 32位IEEE 754浮點 |
double | 64位IEEE 754浮點 | |
字符串 | string |
|
普通示例
圖數(shù)據(jù)庫GDB數(shù)據(jù)文件(以TinkerPop modern圖為例)
CSV數(shù)據(jù)文件如下所示:
點文件
~id
~label
name:string
lang:string
age:int
1
person
marko
29
2
person
vadas
27
3
software
lop
java
4
person
josh
32
5
software
ripple
java
6
person
peter
35
邊文件
~id
~from
~to
~label
weight:double
7
1
2
knows
0.5
8
1
4
knows
1.0
9
1
3
created
0.4
10
4
5
created
1.0
11
4
3
created
0.4
12
6
3
created
0.2
SET屬性示例
CSV數(shù)據(jù)文件
~id | ~label | fruits:string(set)[] | codes:long(set)[] |
1 | person | apple;pear | 22 |
2 | person | banana;bitterorange | 25;81 |
3 | person | "cherry;blackberry;grape" | 3;12 |
4 | person | "54;11" |