数据导入
此文档主要介绍 TuGraph 的数据导入功能。其中包括 CSV 格式的分隔符,jsonline 的格式示例,以及导入在线和离线的两种模式。
1.简介
在图数据库服务安装成功后,您可以使用lgraph_import
批量导入工具将现有数据导入 TuGraph。lgraph_import
支持从 CSV 文件和 JSON 数据源导入数据。
CSV 格式
[movies.csv]
id, name, year, rating
tt0188766,King of Comedy,1999,7.3
tt0286112,Shaolin Soccer,2001,7.3
tt4701660,The Mermaid,2016,6.3
jsonline 格式
["tt0188766","King of Comedy",1999,7.3]
["tt0286112","Shaolin Soccer",2001,7.3]
["tt4701660","The Mermaid",2016,6.3]
TuGraph 支持两种导入模式:
- 离线模式:读取数据并将其 导入指定服务器的数据文件,应仅在服务器离线时完成。
- 在线模式:读取数据并将其发送到工作中的服务器,然后将数据导入其数据库。
2.CSV文件格式分隔符
CSV格式的分隔符可以是单字符或多字符组成的字符串,其中不能包含`\r`或`\n`。注意不同的shell会对输入字符串做不同的处理,因此针对不同的shell输入参数可能需要不同的转义处理。
此外,lgraph_import
还支持以下转义字符,以便输入特殊符号:
转义符 | 说明 |
---|---|
\ | 反斜杠\\ |
\a | 响铃,即 ASCII 码 0x07 |
\f | form-feed,即 ASCII 码 0x0c |
\t | 水平制表符,即 ASCII 码 0x09 |
\v | 垂直制表符,即 ASCII 码 0x0b |
\xnn | 两位十六进制数,表示一个字节,如\x9A |
\nnn | 三位八进制数,表示一个字节,如\001, \443,数值范围不能超过 255 |
例:
$ ./lgraph_import -c ./import.config --delimiter "\001\002"
3.配置文件
lgraph_import
工具通过指定的配置文件进行环境配置。配置文件描述输入文件的路径、它们所代表的点/边以及点/边的格式。
3.1.配置文件格式
配置文件包含两部分:schema 和 files。schema
部分定义 label,files
部分描述要导入的数据文件。
3.1.1.关键字
- schema (数组形式)
- label(必选,字符串形式)
- type(必选,值只能是 VERTEX 或者 EDGE)
- properties(数组形式,对于点必选,对于边如果没有属性可以不配置)
- name(必选,字符串形式)
- type (必选,BOOL,INT8,INT16,INT32,INT64,DATE,DATETIME,FLOAT,DOUBLE,STRING,BLOB)
- optional(可选,代表该字段可以配置,也可以不配置)
- index(可选,该字段是否需要建索引)
- unique(可选,该字段是否建索引,并且是 unique 类型的,即全局唯一)
- pair_unique(可选,该字段是否建索引,并且是 pari_unique 类型的,即两点间唯一,仅用于边索引)unique与pair_unique只能设置一个,同时设置并运行将会因为输入异常而终止
- primary (仅点配置,必选,主键字段,需指定一个 property,用来唯一确定一个点)
- temproal (仅边配置,可选,指定时间戳属性用于存储层排序)
- temporal_field_order (仅边配置,可选,默认为"ASC",表示升序,也可配置为"DESC",表示降序)
- constraints (仅边配置,可选,数组形式,起点和终点的 label,不配置或者为空代表不限制)
- detach_property (点边都可配置,可选,默认是
false
。true
代表属性数据单独存放,在内存不够,属性数据比较多的场景下可以减 少io读放大)
- files (数组形式)
- path(必选,字符串,可以是文件路径或者目录的路径,如果是目录会导入此目录下的所有文件,需要保证有相同的 schema)
- header(可选,数字,头信息占文件起始的几行,没有就是 0)
- format(必须选,只能是 JSON 或者 CSV)
- label(必选,字符串)
- columns(数组形式)
- SRC_ID (特殊字符串,仅边有,代表这列是起始点数据)
- DST_ID (特殊字符串,仅边有,代表这列是目的点数据)
- SKIP (特殊字符串,代表跳过这列数据)
- [property]
- SRC_ID (仅边配置,值是起始点标签)
- DST_ID (仅边配置,值是目的点标签)
3.1.2.索引长度
因为TuGraph对key的长度有限制,唯一索引不允许建立超过限制长度的索引,而非唯一索引会对超过长度限制的属性进行截断处理,并且在通过迭代器遍历非唯一索引时,拿到的key也是经过截断的,可能和预期不一致。针对不同类型的非唯一索引,截断长度是不同的。
3.1.2.1.unique索引
unique索引是全局唯一的,该索引key的最大长度是480bytes。primary作为特殊的unique索引,因此最大key的长度也是480bytes,超过无法建立索引。