本文介绍如何使用 Ultipa Manager、Ultipa Transporter-Importer 两种工具将图数据批量导入到图集中。
本文使用的图数据与准备图集中 图1 所示的图模型相匹配。
数据文件
把图模型中每个 schema 的数据分别准备称一个 CSV 文件,即 CUSTOMER.csv,MERCHANT.csv,TRANSACTION.csv。(点击可下载)
- 点文件 CUSTOMER.csv 中的
cust_no
列、MERCHANT.csv 中的merchant_no
列代表点的系统属性_id
- 其他列均为点的自定义属性
- 边文件 TRANSACTION.csv 中的
cust_no
、merchant_no
两列分别代表边的系统属性_from
、_to
- 其他列均为边的自定义属性
使用 Manager 导入
- 导入前请确保图集和 schema 已创建
- 请确保先导入点再导入边
步骤分解
以导入 CUSTOMER.csv 为例,导入分为以下四个步骤:
- 上传文件
点击 Import 及 “+ Node”,上传本地的 CUSTOMER.csv 文件:
“+ Edge” 用于上传边文件。
- 声明分隔符及表头
本文所使用的数据文件均以英文逗号 ',' 为列分隔符,且均含有表头。点击 Preview 查看文件内的数据解析是否正确:
如果您的文件使用了其他分隔符,或者不含表头,请一定在本步骤进行正确配置。
- 将表头与图模型进行匹配
- 选择文件所代表的 schema,本例中为 customer
- 将表头
cust_no
修改为_id
(右侧的属性类型自动变为 string)
(对于属性尚未创建的表头进行以下两步) - 在表头右侧选择属性类型
- 点击底部的 '+' 创建属性
表头左侧的红色三角 △ 表示该表头所代表的属性尚不存在。如果将该表头修改为一个已存在的属性,或为该表头创建一个属性,则红色三角消失。
如果在上一步中声明了文件无表头,则此处的表头为空,可以手动填写每个表头所代表的属性。
- 执行导入
导入时可以选择upsert(插入更新)或overwrite(插入覆盖)。对于新增数据,两种模式皆可:
重复以上 4 个步骤导入 MERCHANT.csv 和 TRASACTION.csv。在第 3 步中,记得将 MERCHANT.csv 的表头
merchant_no
改为_id
,将 TRASACTION.csv 的表头cust_no
、merchant_no
改为_from
、_to
。
整体演示
以 TRANSACTION.csv 为例进行完整的导入演示:
导入后验证
点、边文件全部导入后,可以看到完整的 schema 树状结构,以及正确的点、边数量:
使用 Transporter 入图
相比于 Manager,通过 Transporter-Importer 进行的导入具有以下亮点:
- 速度更快
- 可以同时导入多个点、边文件
- 不需要事先创建图集、schema
- 可以从文件表头中识别数据类型,如:
通过 Transporter-Importer 进行的导入分为 2 步:
- 准备 YML 文件
在一个 YML 文件中声明服务器连接、数据文件等信息。以下为 YML 文件的一部分:
nodeConfig:
- schema: "customer"
file: "./CUSTOMER2.csv"
- schema: "merchant"
file: "./MERCHANT2.csv"
edgeConfig:
- schema: "transfer"
file: "./TRANSACTION2.csv"
- 点击下载文件包 YML_CSV,包含完整的 YML 文件以及修改表头后的数据文件
- 将文件包内的文件解压并存在至同一个目录下
- 对 YML 文件中的服务器相关信息根据实际情况进行修改
YML 文件中各参数均有注释,更多介绍请阅读 Transporter|Importer。
- 使用命令行工具运行 Ultipa Importer
将 Transporter 的导入工具 ultipa-importer 和之前解压得到的 YML 文件、数据文件放在同一个目录下,在该目录下打开命令行工具执行以下命令:
./ultipa-importer --config ./import_retail.yml
请根据您的操作系统选择命令行工具,如:Ubantu 系统中右键打开 “用终端打开”,Windows 系统中右键打开 “更多”-“用Powershell打开”。
执行命令行时如果提示
bash: ./ultipa-importer: Permission denied
则表示没有相关的执行权限,可执行chmod +x ultipa-importer
获得权限后再执行 ultipa-importer 的命令。