文档首页 > > API参考> SQL作业相关API> 作业相关API>

导入数据

导入数据

分享
更新时间:2021/02/07 GMT+08:00

功能介绍

该API用于将数据从文件导入DLI或OBS表,目前仅支持将OBS上的数据导入DLI或OBS中。

  • 该API为异步操作。
  • 导入数据时,可选择已存在的OBS桶路径或新建OBS桶路径,但只能指定一个OBS桶路径。
  • 若需新建OBS桶,需遵守以下命名规则:
    • 需全局唯一,不能与已有的任何桶名称重复。
    • 长度范围为3到63个字符,支持小写字母、数字、中划线(-)、英文句号(.)。
    • 禁止两个英文句号(.)或英文句号(.)和中划线(-)相邻,禁止以英文句号(.)和中划线(-)开头或结尾。
    • 禁止使用IP地址。
    • 如果名称中包含英文句号(.),访问桶或对象时可能会进行安全证书校验。
  • 导入源文件时,如果源文件中的某一列与目标表列类型不匹配,将会导致该行数据的查询结果为null 。
  • 不支持并发导入同一张表。

调试

您可以在API Explorer中调试该接口。

URI

  • URI格式:

    POST /v1.0/{project_id}/jobs/import-table

  • 参数说明
    表1 URI参数

    参数名称

    是否必选

    参数类型

    说明

    project_id

    String

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

请求消息

表2 请求参数

参数名称

是否必选

参数类型

说明

data_path

String

导入的数据路径(当前仅支持导入OBS上的数据)。

data_type

String

导入的数据类型(当前支持csv、parquet、orc、json、avro数据类型)。

说明:

不支持导入Hive表生成的avro格式数据。

database_name

String

导入表所属的数据库名称。

table_name

String

导入表的名称。

with_column_header

Boolean

导入数据中的第一行数据是否包括列名,即表头。默认为“false”,表示不包括列名。导入CSV类型数据时可指定。

delimiter

String

用户自定义数据分隔符,默认为逗号。导入CSV类型数据时可指定。

quote_char

String

用户自定义引用字符,默认为双引号。导入CSV类型数据时可指定。

escape_char

String

用户自定义转义字符,默认为反斜杠。导入CSV类型数据时可指定。

date_format

String

指定特定的日期格式,默认为“yyyy-MM-dd”。日期格式字符定义详见表3。导入CSV及JSON类型数据时可指定。

bad_records_path

String

作业执行过程中的bad records存储目录。设置该配置项后,bad records不会导入到目标表。

timestamp_format

String

指定特定的时间格式,默认为“yyyy-MM-dd HH:mm:ss”。时间格式字符定义详见表3。导入CSV及JSON类型数据时可指定。

queue_name

String

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

overwrite

Boolean

是否覆盖写。默认为“false”,表示追加写。为“true”,表示覆盖写。

partition_spec

Object

表示需要导入到哪个分区。

  • 不配置表示动态导入整表数据,导入的数据需要包含分区列的数据;
  • 如果导入时,配置所有分区信息,则表示导入数据到指定分区,导入的数据不能包含分区列的数据;
  • 如果导入时,配置了部分分区信息,而导入的数据必须包含非指定的分区数据,不能包含指定的分区数据,否则数据导入后,非指定的数据分区字段列会存在null值等异常值。

conf

Array of Strings

用户定义适用于此作业的配置参数。目前支持的配置项:“dli.sql.dynamicPartitionOverwrite.enabled”默认值为“false”,对于DataSource表,表示动态插入覆盖整表数据,为“true”表示覆盖指定分区数据。

说明:

对于Hive分区表的动态覆盖写,仅支持覆盖涉及到的分区数据,不支持覆盖整表数据。

表3 日期及时间模式字符定义

模式字符

日期或时间元素

示例

G

纪元标识符

AD

y

年份

1996; 96

M

月份

July; Jul; 07

w

年中的周数

27(该年的第27周)

W

月中的周数

2(该月的第2周)

D

年中的天数

189(该年的第189天)

d

月中的天数

10(该月的第10天)

u

星期中的天数

1 = 星期一, ..., 7 = 星期日

a

am/pm 标记

pm(下午时)

H

24小时数(0-23)

2

h

12小时数(1-12)

12

m

分钟数

30

s

秒数

55

S

毫秒数

978

z

时区

Pacific Standard Time; PST; GMT-08:00

响应消息

表4 响应参数

参数名称

是否必选

参数类型

说明

is_success

Boolean

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

message

String

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

job_id

String

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

job_mode

String

作业执行模式:

  • async:异步
  • sync:同步

示例

  • 请求样例:
    {
        "data_path": "obs://home/data1/DLI/t1.csv",
        "data_type": "csv",
        "database_name": "db2",
        "table_name": "t2",
        "with_column_header": false,
        "delimiter": ",",
        "quote_char": ",",
        "escape_char": ",",
        "date_format": "yyyy-MM-dd",
        "timestamp_format": "yyyy-MM-dd'T'HH:mm:ss.SSSZZ",
        "queue_name": "queue2",
        "overwrite": false,
        "partition_spec":{
          "column1":  "2020-01-01",
          "column2":  "columnPartValue"  
         }
    }
  • 成功响应样例:
    {
      "is_success": true,
      "message": "import data to table t2 started",
      "job_id": "6b29eb77-4c16-4e74-838a-2cf7959e9202",
      "job_mode":"async"
    }

状态码

状态码如表5所示。

表5 状态码

状态码

描述

200

导入成功。

400

请求错误。

500

内部服务器错误。

错误码

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

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区论坛频道来与我们联系探讨

智能客服提问云社区提问