如何用python实现nebula-graph v2.6.1 中的数据导出?

数据导出指的是?输出为什么?

老师,就是从nebula数据库中导出数据的方式,我是个新手,工作需要用这个nebula数据库。主要用python,不知道代码该怎么写

我看到你在 issue 里的描述

老师,我来了,还是想问下导出数据,用python代码实现的方式可以实现批量导出吗?在nebula-graph-studio中的导出,是导出来探索的数据,查到几条就可以导出几条?代码中也能通过查询的方式导出写入是吗?

用python代码实现的方式可以实现批量导出吗?

  • 导出整个数据库的数据? 还是特定query?我想应该不是指的特定query,你可能需要的是 storage client,它是绕过计算层直接去存储层扫点边的

在nebula-graph-studio中的导出,是导出来探索的数据,查到几条就可以导出几条?

  • 是的,能满足你要求么?可以在 studio 的 console 里把query结果导出

代码中也能通过查询的方式导出写入是吗?

实现查询返回的数据类型是<class ‘nebula2.data.ResultSet.ResultSet’>,ResultSet(keys: [‘follow._dst’], values: [“player101”],[“player102”],[“player106”]),我想把values的值拿出来,应该用什么方法?

只能用python 吗?有没有go 的scan?

可以看看这个例子 通过Scan接口扫描数据

1 个赞

我看到了这个例子,意思是有没有go语言的类似API
::

似乎是没有 我暂时没找到

1 个赞

Java 也有scan 的例子

1 个赞

抱歉,还没封装,我提了 issue,欢迎您来给我们补充为什么您需要哈

这是很好的问题,建议您在 iPython 这样的 REPL 里去 dir(result) 然后亲自探索一下,一般来说是看它是什么类型,用相应的 asXXX() 的方法去处理是最好的:

  • 点、边、路径
  • 数据类型,比如 string, datatime
  • 复合类型,比如 map

你可以一定程度上参考官方例子和我这个示例项目的 readme 里边的 design log 章节

https://github.com/wey-gu/nebula-corp-rel-search#design-log

In [11]: p=resp.row_values(22)[0].as_path()

In [12]: p.nodes()
Out[12]:
[("c_132" :corp{name: "Chambers LLC"}),
 ("p_4000" :person{name: "Colton Bailey"})]

In [13]: p.relationships()
Out[13]: [("p_4000")-[:role_as@0{role: "Editorial assistant"}]->("c_132")]

这个情况下我要处理的结果是 path,所以我就用 as_path 方法把它存成了 path,这个方法是稍微封装过的,他的值自带很多方便的方法(可以dir来看,然后挨个试试)。

防止掉进去的陷阱是:用了取出 raw value 的方式,那种非封装的类型里就没有有好的封装,比如原始类型就没有 .nodes() .relationships() 的方法。

另外一个

2.6以后,不用 execute() 获得 ResultSet,而是用 execute_json() 它的返回方法是一个大json,需要的东西都在里边了~~

其他

如果是 java 的话,情况是一样的,但是 java 没有开箱即用的 REPL ,我分享了一个文章讲这一块 https://siwei.io/nebula-java-happy-parsing-guide/
几乎和python是一样的,要用封装格式,别用原始格式。

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。