# 导入任务

导入任务不是只导入 CSV。创建页面按数据形态、来源和目标位置提供不同的流程；请先按下表选择流程，再调用相应接口。

| 数据形态 | 数据来源 | 导入目标 | 任务创建方式 |
| --- | --- | --- | --- |
| 非结构化文件 | 对象存储或分布式文件系统连接器中的文件或目录 | 数据卷（Volume） | 通过[创建连接器文件导入任务](create-import-task.md)创建。 |
| 非结构化文件 | 本地文件或目录 | 数据卷（Volume） | 通过[本地上传并创建导入任务](create-local-import-task.md)上传。 |
| 结构化文件 | 当前创建页面可选择的 CSV、XLS 或 XLSX 文件 | 已有数据表，或在指定数据库中新建数据表 | 通过[创建连接器文件导入任务](create-import-task.md)创建，并填写 `table_config`。 |
| 结构化文件 | 当前创建页面可选择的本地 CSV、XLS 或 XLSX 文件 | 已有数据表，或在指定数据库中新建数据表 | 先[上传文件](../connector-files/upload-file.md)，再通过[本地上传并创建导入任务](create-local-import-task.md)提交表配置。 |
| 数据库中的结构化数据 | 数据库连接器中的表、集合或其他支持的对象 | 已有数据表，或在指定数据库中新建数据表 | 通过[创建数据库结构化载入任务](create-structured-load-task.md)创建。 |

## 先确认数据会导入到哪里

- **非结构化导入**：选择的数据卷就是最终写入位置。连接器方式由 `volume_id` 指定数据卷；本地方式由 multipart 字段 `VolumeID` 指定数据卷。当前请求没有“目标目录”字段，文件写入所选数据卷。
- **结构化文件导入**：数据写入 `table_config` 指定的目标表。选择已有表时填写 `table_id`；新建表时填写 `database_id`、`new_table: true` 和 `create_table`。这类任务不以数据卷作为数据行的目标位置。
- **数据库结构化载入**：数据写入 `structured_load_config.target` 指定的目标表。该请求不能携带 `volume_id`，也没有目标目录字段。

连接器文件或目录的来源路径由 `source_config.common_file_task_config.uris` 指定；本地上传中 `meta` 的 `path` 只用于描述和筛选上传来源路径，不是数据卷内的目标目录。当前创建页的“保留目录结构”不可选，因此压缩包按扁平化方式处理。

## 查看连接器文件类型

创建任务前，可先调用[查询文件列表](../connector-files/list-files.md)。响应中的 `data.files[].type` 表示连接器识别出的文件类型，`data.files[].uri` 可作为连接器文件导入的来源 URI。

- 创建页面的**结构化**文件选择器当前只允许选择 `CSV`（`7`）、`XLS`（`24`）和 `XLSX`（`25`）。
- 创建页面的**非结构化**文件筛选器提供文档、音频、视频、图片、网页、邮件、CAD 和其他类别。使用文件列表返回的 `type` 值填写 `file_filter_config.file_types` 或本地上传的 `file_types`。

文件类型只表示文件名可识别的类型；任务是否能够完成仍取决于来源文件、连接器和导入配置。提交任务后请查询任务详情、任务文件或运行记录确认实际结果。

## 本地上传数量和大小限制

下表是当前创建页面的本地文件选择限制，不是对直接调用接口时服务端处理能力的通用承诺。

| 导入类型 | 单次可选择数量 | 单个文件大小 | 说明 |
| --- | --- | --- | --- |
| 非结构化文件 | 最多 20 个文件 | 最大 200 MiB | 可选择本地文件或文件夹；选择文件夹时，其中每个文件均计入 20 个文件。 |
| 结构化文件 | 1 个文件 | 最大 200 MiB | 当前文件选择器只允许 CSV、XLS 或 XLSX。 |

## 非结构化导入可配置项

非结构化导入在选择数据卷后，可按需要设置以下条件：

| 页面功能 | 请求字段 | 作用 |
| --- | --- | --- |
| 连接器源 / 本地上传 | `/task` JSON 请求或 `/connectors/upload` multipart 请求 | 决定从连接器读取，还是直接上传本地文件。 |
| 一次性 / 周期导入 | `load_mode_config` | 连接器来源可一次性执行，也可按分钟、小时或每天周期扫描目录。周期任务只能选择目录。 |
| 文件类型筛选 | `file_filter_config.file_types` 或 `file_types` | 可选文档、音频、视频、图片、网页、邮件、CAD 和其他类型；选择“其他”时不按类型筛选。 |
| 路径正则 | `file_filter_config.path_regex` 或 `path_regex` | 仅处理来源路径匹配正则表达式的文件。 |
| 解压策略 | `unzip_keep_structure` | 当前页面以扁平化方式处理压缩包。 |
| 去重策略 | `dedup.by`、`dedup.strategy` | 可按文件名和/或 MD5 判断重复文件，并选择跳过或覆盖。 |

```{toctree}
:hidden:
:maxdepth: 1

查询任务列表 <list-import-tasks>
查询任务详情 <get-import-task>
导入任务对象字段 <import-task-object-fields>
创建任务 <create-import-task>
本地上传并创建导入任务 <create-local-import-task>
创建数据库结构化载入任务 <create-structured-load-task>
更新任务 <update-import-task>
删除任务 <delete-import-task>
暂停任务 <pause-import-task>
恢复任务 <resume-import-task>
查询任务文件 <list-import-task-files>
查询运行记录 <list-import-task-runs>
重试失败文件 <retry-failed-import-files>
```
