更新时间:2024-05-28 GMT+08:00

导出查询结果

功能介绍

该API用于将SQL语句的查询结果导出到OBS对象存储中,只支持导出“QUERY”类型作业的查询结果。

  • 该API为异步操作。
  • 目前只支持导出数据到OBS中,且导出的路径必须指定到文件夹级别。OBS路径中不支持逗号,且其中的桶名不能以正则格式“.[0-9]+(.*)”结尾,即,若桶名包含“.”, 则最后一个“.”不能以数字开头(例如:**.12abc 或 **.12)。

URI

  • URI格式:

    POST /v1.0/{project_id}/jobs/{job_id}/export-result

  • 参数说明
    表1 URI 参数

    参数名称

    是否必选

    参数类型

    说明

    project_id

    String

    项目编号,用于资源隔离。获取方式请参考获取项目ID

    job_id

    String

    作业ID。

请求消息

表2 请求参数

参数名称

是否必选

参数类型

说明

data_path

String

导出结果存储的路径(当前仅支持将数据存储在OBS上)。另外,该路径下的文件夹须不存在,如请求样例中的“path”文件夹。

compress

String

导出数据的压缩格式,目前支持gzip,bzip2和deflate压缩方式; 默认值为none,表示不压缩。

data_type

String

导出数据的存储格式,目前API支持csv和json格式。

queue_name

String

指定执行该任务的队列。若不指定队列,将采用default队列执行操作。

export_mode

String

导出模式,目前支持“ErrorIfExists”“Overwrite”,不指定“export_mode”则默认为“ErrorIfExists”

  • “ErrorIfExists”:存在即报错。指定的导出目录必须不存在,如果指定目录已经存在,系统将返回错误信息,无法执行导出操作。
  • “Overwrite”:覆盖。在指定目录下新建文件,会删除已有文件。

with_column_header

Boolean

导出csv和json格式数据时,是否导出列名。

  • 设置为“true”,表示导出列名。
  • 设置为“false”,表示不导出列名。
  • 若为空,默认为“false”。

limit_num

Integer

需要导出的数据数量,默认值为“0”,表示全部导出。

encoding_type

String

导出数据的编码格式。默认使用utf-8。

支持以下编码格式:

  • utf-8
  • gb2312
  • gbk

quote_char

String

用户自定义引用字符。

默认值: 英文双引号(")

仅在数据格式为csv格式时支持配置引用字符。

引用字符在导出作业结果时用于标识文本字段的开始和结束,即用于分割字段。

仅支持设置一个字符。

主要用于处理包含空格、特殊字符或与分隔符相同字符的数据。

escape_char

String

用户自定义转义字符。

默认值:英文反斜杠(\)

仅在数据格式为csv格式时支持配置转义字符。

在导出结果中如果需要包含特殊字符,如引号本身,可以使用转义字符(反斜杠 \ )来表示。

仅支持设置一个字符。

常用转义字符的场景:

  • 假设两个引用字符之间的数据内容存在第三个引用字符,则在第三个引用字符前加上转义字符,从而避免字段内容被分割。
  • 假设数据内容中原本就存在转义字符,则在这个原有的转义字符前再加一个转义字符,避免原来的那个字符起到转义作用。

响应消息

表3 响应参数

参数名称

是否必选

参数类型

说明

is_success

Boolean

请求发送是否成功。“true”表示请求发送成功。

message

String

系统提示信息,执行成功时,信息可能为空。

job_id

String

提交请求成功时,生成并提交一个新的作业,返回作业ID。用户可以使用作业ID来查询作业状态和获取作业结果。

job_mode

String

作业执行模式:

  • async:异步
  • sync:同步

请求示例

将SQL语句的查询结果导出到OBS中以json格式存储。

{
  "data_path": "obs://obs-bucket1/path",
  "data_type": "json",
  "compress": "gzip",
  "with_column_header": "true",
  "queue_name": "queue2",
  "limit_num": 10
}

响应示例

{
  "is_success": true,
  "message": "",
  "job_id": "37a40ef9-86f5-42e6-b4c6-8febec89cc20",
  "job_mode":"async"
}

状态码

状态码如表4所示。

表4 状态码

状态码

描述

200

导出成功。

400

请求错误。

500

内部服务器错误。

错误码

调用接口出错后,将不会返回上述结果,而是返回错误码和错误信息,更多介绍请参见错误码