跳转至
开发版采用单机部署,无需产品 License 文件。需要多机部署或大规模性能测试? 了解企业版

nebula_exec

nebula_exec过程用于在远程的悦数图数据库开发版集群上执行 GQL 查询。您可以调用此过程将数据导入到悦数图数据库开发版的图中。

过程签名

nebula_exec(nebula_uri_string: String, gql: String)

参数

nebula_uri_string

用于连接悦数图数据库开发版的 URI 字符串。

该 URI 的格式如下:

nebula_uri_string
nebula:// username : password @ graph_address ? tls_parameter_name = tls_parameter_value &

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属性。