nebula_exec¶
nebula_exec过程用于在远程的悦数图数据库开发版集群上执行 GQL 查询。您可以调用此过程将数据导入到悦数图数据库开发版的图中。
过程签名¶
nebula_exec(nebula_uri_string: String, gql: String)
参数¶
nebula_uri_string¶
用于连接悦数图数据库开发版的 URI 字符串。
该 URI 的格式如下:
- nebula_uri_string
nebula_uri_string ::=
'nebula://' username ':' password '@' graph_address ('?' ( tls_parameter_name '=' tls_parameter_value) ('&' ( tls_parameter_name '=' tls_parameter_value))* )?
username¶
连接悦数图数据库开发版的用户名。
password¶
登录远程实例所用账号的当前密码。
graph_address¶
连接悦数图数据库开发版中 Graph 服务的地址。格式为ip:port。
tls_parameter_name和tls_parameter_value¶
连接 Graph 服务时用于配置 TLS 的参数。TLS 参数的完整列表,请参见 tls_parameter_name 和 tls_parameter_value。
gql¶
待执行的 GQL 查询。
示例¶
执行 DDL 操作¶
将 URI 中的<current-password>替换为登录远程实例所用账号的当前密码。若已修改密码,请使用修改后的密码。
CALL nebula_exec('nebula://root:<current-password>@192.168.8.129:10005', 'CREATE GRAPH IF NOT EXISTS test_movie TYPED movie_type') FINISH
执行插入操作¶
'''
CALL nebula_exec('nebula://root:<current-password>@192.168.8.129:10005', '
USE test_movie
INSERT OR REPLACE
(@Director{id:111, name:"Alice", birthDate:date("1990-01-01")}),
(TYPED Actor{id:222, name:"Bob", birthDate:date("1990-01-02")})
') FINISH
'''
执行更新操作¶
'''
CALL nebula_exec('nebula://root:<current-password>@192.168.8.129:10005', '
USE test_movie
MATCH (v@Actor{id:222}) SET v.name = "Charlie"
') FINISH
'''
执行删除操作¶
'''
CALL nebula_exec('nebula://root:<current-password>@192.168.8.129:10005', '
USE test_movie
MATCH (v@Actor{id:222}) DELETE v
') FINISH
'''
执行批量更新操作¶
以下示例基于 CREATE TEMPORARY GRAPH 中创建的临时图#movie_temporary_graph。
'''
USE #movie_temporary_graph {
TABLE t {id INT, name STRING}
VALUE fmt_query = "
TABLE t TYPED TABLE {id INT, name STRING} = %s
USE test_movie
FOR r IN t
MATCH (a@Movie) WHERE a.id = r.id
SET a.name = r.name"
MATCH (a@Movie)
PER NODE (a) {
EXPORT a.id, "Movie_" || CAST(a.id as STRING) INTO t
}
FOR split IN table_split(t, CAST(256 as UINT))
CALL nebula_exec("nebula://root:<current-password>@192.168.8.129:10005", fmt(fmt_query, to_literal(split))) FINISH
}
'''
上述示例将本地计算结果分批写入远程悦数图数据库开发版集群中。该示例遍历本地临时图中所有Movie点,为每个点生成新名称(格式为Movie_<ID>),然后按每 256 行分批,通过nebula_exec过程将更新语句发送到远程悦数图数据库开发版集群执行,批量更新test_movie图中对应Movie点的name属性。