本文适用于 Go 版本的 Ultipa Transporter - Exporter 客户端工具。
Ultipa Transporter - Exporter 是命令行下的快速导出工具,一条命令便可以从远程 Ultipa 图数据向本地库批量导出多个点、边文件:
版本更新(V4.1至V4.2)
- 支持 text 属性类型
- 增加参数
MaxPacketSize
用于调节 SDK 处理每个包的最大字节数 - 增加参数
Timeout
用于设置 grpc 的超时时间 - 增加参数
timezone
用于设置 timestamp 的时区 - 导出前检查图集状态是否为 MOUNTED
准备工作
- 配置文件
- 与您的操作系统相适配的命令行工具:
- Linux 或 MacOS:bash, zsh, tcsh
- Windows:Windows PowerShell
- 与您的操作系统相适配的 Ultipa Exporter
预备知识 - 系统属性
点的系统属性:
_id
:点 ID,string 类型,最大长度 128 字节_uuid
:点 ID,uint64 类型
边的系统属性:
_uuid
:边 ID,uint64 类型_from
:边起点 FROM 的_id
_to
:边终点 TO 的_id
_from_uuid
:边起点 FROM 的_uuid
_to_uuid
:边终点 TO 的_uuid
系统属性会默认导出,无需在配置文件中指定。
点、边文件
- 文件名:
<schema>.node.<file_type>
及<schema>.edge.<file_type>
,例如:'default.node.csv' - 每个文件:数据属于同一个 schema
- 每行数据(除表头):一个点或一个边
- 每列数据:一个属性
- 文件类型:csv
- 分隔符: ','
- 表头(列名)格式:
<属性名>:<类型>
,有无表头可通过参数writeHeader
设置
YML: server
server:
host: "192.168.35.151:60024" # 对于集群服务器,多个节点用英文逗号隔开
username: employee533
password: joaedSSGsdf
crt: "" # 用于远程通信的 ssl 证书文件的路径及名称,仅在双方均为 ssl 模式时有效
graphset: test_graph # 图集名,默认使用图集 'default'
YML: nodeConfig | edgeConfig
nodeConfig:
- schema: student # 导出的 schema,必填
# 不声明 properties 则导出该 schema 的全部属性
- schema: course
properties:
- name: title # 声明导出的自定义属性
- name: credit
# 系统属性 _id、_uuid 会默认导出,无需声明
edgeConfig:
- schema: "*" # 星号 * 表示导出所有边的所有属性,此时无需填写 `properties` 及其 `name`
YML: settings
settings:
writeHeader: false # 是否在导出的文件中写入表头,默认为写表头
outPath: ./temp # 导出文件的路径;默认导出至 './export'
其他参数:
参数 | 规范 | 默认值 | 描述 |
---|---|---|---|
MaxPacketSize | int | 41943040 (即 40M) | SDK 处理每个包的最大字节数 |
Timeout | int | 1000 | 导出数据量大时的 grpc 超时时间限制,单位为秒;<0 时无限制,=0 时为 1000 秒 |
timezone | string | (本地时区) | 导入的 timestamp 值所属时区,如 +08:15、Asia/Shanghai 等 |
命令行
- 显示帮助信息
./ultipa-exporter --help
- 生产配置文件模板
./ultipa-exporter --sample
- 执行导出操作,配置文件 out.yml 存在于当前路径下
./ultipa-exporter --config ./out.yml
所有参数:
参数 |
描述 |
---|---|
--help | 显示帮助信息 |
--config <FILE_PATH_NAME> | 指定配置文件并执行导入 |
--sample | true: 生成配置文件模板,false:不生成 |
--host <IP:PORT> | 覆盖配置文件中的参数 host |
--graph <GRAPH_NAME> | 覆盖配置文件中的参数 graphset |
--username <USERNAME> | 覆盖配置文件中的参数 username |
--password <PASSWORD> | 覆盖配置文件中的参数 password |
--maxPacketSize <MAXPACKETSIZE> | 覆盖配置文件中的参数 MaxPacketSize |
--logAppend | true:将多次发生的错误信息追加至同一个 log 文件,false:为每次发生的错误信息生成一个 log 文件 |
--progressLog <boolean> | (对 Ultipa Manager 有效)true:生成进度 log 文件,false:不生成 |
--version | true: 显示 Exporter 版本,false:不显示 |
FAQ
Q: 导出时报错 rpc error: code = ResourceExhausted desc = Sent message larger than max (31324123 vs. 4194304) 是什么意思?怎么解决?
A: 该报错是指在导出某一个数据分批时,批的数据量 31324123 byte 超过了限值 4194304 byte,通常是由于导出的属性过多、或属性数据量过大(用 text 类型存储的超长文本),从而使批的数据量超过了服务器的 max_rpc_msgsize(默认 4M)或 Go SDK 的 MaxPacketSize(默认 40M)。
解决方案:提高配置文件中的 MaxPacketSize
,和/或提高服务器配置 max_rpc_msgsize
(后者须重启服务器)。Exporter 导出数据时的分批是自动进行的,用户无法修改批大小。
Q: 导出的时间值对应的是什么时区?
A: datetime 无时区概念,导出时无时区信息,timestamp 导出时转化为 timezone
设置的时区,未设置该参数则为本地时区。