OSS数据导入示例
以下演示如何将数据导入到GDB实例,下面所有操作都是在与GDB相同Region的ECS上执行。
环境准备
在开始之前,您必须准备以下内容:
一个GDB数据库实例。有关创建GDB数据库实例的信息,请参考快速入门
一个与GDB实例在相同Region的OSS存储bucket。您可以使用已有的bucket,如果没有可以参考开始使用阿里云OSS来创建存储空间
授权GDB访问您OSS存储空间的权限,参照导入授权完成角色创建,您也可以准备有OSS访问权限的账号AccessKey信息。导入程序只需要对您OSS数据有读取访问权限。
需要导入到GDB实例的CSV数据文件,如果您还没有构造测试数据,可以使用
air-routes
数据集,下载CSV格式的点文件和边文件。
将数据导入到GDB实例中
将准备的数据上传到OSS的存储bucket中,bucket必须与GDB实例在相同Region。
可以参照OSS上传文件完成待导入的CSV格式数据文件上传,下面使用
ossutil
上传air-routes
数据集到OSS,你也可以直接在OSS控制台通过页面操作上传。# 点文件
./ossutil cp air-routes-latest-nodes.csv oss://{mybucket}/air-routes/air-routes-latest-nodes.csv
# 边文件
./ossutil cp air-routes-latest-edges.csv oss://{mybucket}/air-routes/air-routes-latest-edges.csv
从命令行发送HTTP请求启动导入任务。替换下面大括弧中的参数,包括GDB地址、端口、OSS文件路径和授权资源名称,以及访问实例的用户名密码。
GDB实例地址和端口可以从实例基本信息页面查看,分别对应内网地址和内网端口。
{mygdb-endpoint}:8182
示例OSS文件路径分别使用上述
air-routes
数据集点/边文件的路径授权资源名称参照
导入授权
获取,您也可以提供AccessKey参数,示例使用授权后的以下ARN。ramRoleArn : acs:ram::{my-uid}:role/{role-name}
发送导入数据命令
curl -u {username}:{password} -X POST \
-H 'Content-Type: application/json' \
https://{mygdb-endpoint}:8182/loader -d '
{
"source" : "oss://{mybucket}/air-routes/air-routes-latest-nodes.csv",
"ramRoleArn" : "acs:ram::{my-uid}:role/{role-name}",
}'
注意
待导入点完成后,提供
source
为边文件路径,再启动一个边的导入任务GDB导入程序检查参数正确后返回任务
id
,例如:{
"status" : "200 OK",
"payload" : {
"loadId" : "552617AF-4F1E-4CD8-9533-A2EC154688DC"
}
}
使用上述步骤的
id
获取导入任务的状态:curl -u {username}:{password} -X GET '{mygdb-endpoint}:8182/loader/552617AF-4F1E-4CD8-9533-A2EC154688DC'
如果返回结果有列出错误,请参考错误信息列表了解更详细内容。
(可选)使用上述步骤的
id
取消导入任务:curl -u {username}:{password} -X DELETE '{mygdb-endpoint}:8182/loader/552617AF-4F1E-4CD8-9533-A2EC154688DC'
命令会在取消成功后返回HTTP状态码
200 OK
,取消正在后台执行的任务会阻塞等待任务停止再返回。任务中已经导入到GDB实例的点或边数据不会回滚,将保留在GDB中。
导入工具
除使用curl
命令发送请求外,您也可以使用GDB工具集中的GdbLoader
脚本完成以上示例,具体使用可以参考脚本说明。
# 添加导入点任务
python GdbLoader.py --host {mygdb-endpoint}:8182 --username ${username} --password ${password} --todo add_task --source oss://{mybucket}/air-routes/air-routes-latest-nodes.csv --arn acs:ram::{my-uid}:role/{role-name}
# 添加导入边任务
python GdbLoader.py --host {mygdb-endpoint}:8182 --username ${username} --password ${password} --todo add_task --source oss://{mybucket}/air-routes/air-routes-latest-edges.csv --arn acs:ram::{my-uid}:role/{role-name}
# 查询任务详情
python GdbLoader.py --host {mygdb-endpoint}:8182 --username ${username} --password ${password} --todo get_task --loaderId 552617AF-4F1E-4CD8-9533-A2EC154688DC
# 取消任务
python GdbLoader.py --host {mygdb-endpoint}:8182 --username ${username} --password ${password} --todo delete_task --loaderId 552617AF-4F1E-4CD8-9533-A2EC154688DC
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论