Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/in-out/nebula-exec/ Documentation version: v5.3.2 # 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](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/in-out/import/#tls_parameter_name) 和 [tls_parameter_value](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/in-out/import/#tls_parameter_value)。 ### `gql` 待执行的 GQL 查询。 ## 示例 ### 执行 DDL 操作 将 URI 中的``替换为登录远程实例所用账号的当前密码。若已修改密码,请使用修改后的密码。 ```` CALL nebula_exec('nebula://root:@192.168.8.129:10005', 'CREATE GRAPH IF NOT EXISTS test_movie TYPED movie_type') FINISH ```` ### 执行插入操作 ```` ''' CALL nebula_exec('nebula://root:@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:@192.168.8.129:10005', ' USE test_movie MATCH (v@Actor{id:222}) SET v.name = "Charlie" ') FINISH ''' ```` ### 执行删除操作 ```` ''' CALL nebula_exec('nebula://root:@192.168.8.129:10005', ' USE test_movie MATCH (v@Actor{id:222}) DELETE v ') FINISH ''' ```` ### 执行批量更新操作 以下示例基于 [CREATE TEMPORARY GRAPH](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/graph-projection/create/) 中创建的临时图`#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:@192.168.8.129:10005", fmt(fmt_query, to_literal(split))) FINISH } ''' ```` 上述示例将本地计算结果分批写入远程悦数图数据库开发版集群中。该示例遍历本地临时图中所有`Movie`点,为每个点生成新名称(格式为`Movie_`),然后按每 256 行分批,通过`nebula_exec`过程将更新语句发送到远程悦数图数据库开发版集群执行,批量更新`test_movie`图中对应`Movie`点的`name`属性。