导入数据
功能介绍
该API用于将数据从文件导入DLI或OBS表,目前仅支持将OBS上的数据导入DLI或OBS中。
- 该API为异步操作。
- 导入数据时,可选择已存在的OBS桶路径或新建OBS桶路径,但只能指定一个OBS桶路径。
- 若需新建OBS桶,需遵守以下命名规则:
- 需全局唯一,不能与已有的任何桶名称重复。
- 长度范围为3到63个字符,支持小写字母、数字、中划线(-)、英文句号(.)。
- 禁止两个英文句号(.)或英文句号(.)和中划线(-)相邻,禁止以英文句号(.)和中划线(-)开头或结尾。
- 禁止使用IP地址。
- 如果名称中包含英文句号(.),访问桶或对象时可能会进行安全证书校验。
- 导入源文件时,如果源文件中的某一列与目标表列类型不匹配,将会导致该行数据的查询结果为null 。
- 不支持并发导入同一张表。
URI
- URI格式:
- 参数说明
表1 URI参数 参数名称
是否必选
参数类型
说明
project_id
是
String
项目编号,用于资源隔离。获取方式请参考获取项目ID。
请求消息
参数名称 |
是否必选 |
参数类型 |
说明 |
---|---|---|---|
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 |
表示需要导入到哪个分区。
|
conf |
否 |
Array of Strings |
用户定义适用于此作业的配置参数。目前支持的配置项:“dli.sql.dynamicPartitionOverwrite.enabled”默认值为“false”,对于DataSource表,表示动态插入覆盖整表数据,为“true”表示覆盖指定分区数据。
说明:
对于Hive分区表的动态覆盖写,仅支持覆盖涉及到的分区数据,不支持覆盖整表数据。 |
模式字符 |
日期或时间元素 |
示例 |
---|---|---|
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 |
响应消息
参数名称 |
是否必选 |
参数类型 |
说明 |
---|---|---|---|
is_success |
否 |
Boolean |
请求发送是否成功。“true”表示请求发送成功。 |
message |
否 |
String |
系统提示信息,执行成功时,信息可能为空。 |
job_id |
否 |
String |
此SQL将生成并提交一个新的作业,返回作业ID。用户可以使用作业ID来查询作业状态和获取作业结果。 |
job_mode |
否 |
String |
作业执行模式:
|
请求示例
{ "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" }
错误码
调用接口出错后,将不会返回上述结果,而是返回错误码和错误信息,更多介绍请参见错误码。