You need to enable JavaScript to run this app.
导航

数据导入-导入文件

最近更新时间2023.05.31 15:17:48

首次发布时间2022.05.05 17:35:58

1. 概述

文件导入功能可以帮助您将现有本地的 CSV/JSON/ORC/Parquet 文件快速通过网页上传,并导入到指定的 LAS 的表或者分区中。
通过该功能,可以方便地快速准备一些已有的文件导入到 LAS 中进行测试。 要导入到一张表,您需要准备好数据,并在数据管理页面,提前创建好表结构。

2. 前置条件
  • 当前支持 CSV / Parquet / ORC / Json 格式

  • 当前支持文件大小上限:2 GB

  • 当前用户需要有该目标表的写权限

  • 当前用户需要具有至少一个队列的执行权限

  • 文件的列名和数据的类型,需要跟 LAS 表的数据类型保持一致,LAS 文件导入有比较严格的文件列名和类型检查,以避免您的文件导入时产生潜在的数据丢失风险

  • 当前支持范围: 非主键内表和 TOS 外表

3. 创建导入任务

有下面两种方式可以发起一个导入任务,您可以在 LAS 控制台菜单通过下面的入口进入:

  • 数据管理 -> 表管理 -> 导入数据

  • 生态连接 -> 数据导入 -> 导入数据

3.1 上传文件

点击导入数据后,选择本地上传,即可以上传本地文件来触发导入任务。

点击上传,选择要导入的表的 schema 和表名信息,选择对应的文件类型,即可完成文件上传操作。

3.2 任务配置

  • 上传文件完成后。 对于分区表,您需要指定导入的分区。对于非分区表,则不会出现导入分区的选项。在选择分区后,会立刻触发文件导入的预览和校验任务。

  • 对于 CSV 的文件格式,会有如下选项,分隔符/转义符/读取首行为列名。通常您需要指定分隔符,是否读取首行作为文件列名作为选项。 如 CSV 第一行为字段名,则必须选择读取首行为列名。 如果直接是数据,则需要关闭该选项。

  • 在数据采样里面,当格式完整兼容可以导入时,数据采样将会最多显示前 3 行信息,告知映射的文件字段和表字段。以及导入的数据抽样。

  • 在抽样的同时,我们会检查导入文件和对应的表,映射字段是否一致,通常会检查:

    • 文件的列长度和表格列长度是否一致

    • 文件的列名和表格列名是否一致

    • 文件的字段实际类型需要和表格的定义类型一致,其中 CSV 和 JSON 的文件类型为采样自动推断获取,而 ORC 和 Parquet 格式自带数据结构类型,LAS 会直接采用该数据类型。

  • 当上面有条件不满足时, 文件预览即提示报错,无法进行下一步,报错同时会给出具体的建议和失败原因。当采样完成后,即可点击下一步触发文件导入操作。

3.3 执行任务

在生成导入任务后,后台会启动 LAS 的查询引擎进行导入。 通常一个导入任务可能耗时 5 分钟,这包括了引擎的启动时间,和实际任务的完成时间。 此时可以选择后台执行。

点击后台执行后,会提示现在的执行状况,点击查看即可跳转到任务列表。

4. 查看任务列表

生态连接 - 数据导入 页面,您可以管理现有的和已经完成的导入任务作业。您可以通过下方的查看导入任务列表,随时关注当前导入任务的情况。您还可以查看导入的目标表,目标分区,导入行数,文件大小,执行用户等信息。

5. 后续操作

在导入成功后,可以在数据管理-表管理的数据预览页面,预览表中的数据。您也可以通过 LAS-查询分析,直接通过 SQL 的方式,查询导入的表。

6. 常见问题 FAQ

Q:数据采样,为什么会提示预览数据失败,如列名不匹配结构不一致,怎样的文件允许导入?
规范的文件和表格导入需要满足如下条件:

  • 文件的列长度和表格列长度一致 (除分区列)。
  • 文件的列名需和表格列名完全一致并按照顺序对齐。
  • 文件的字段实际类型需要和表格的定义类型一致,其中 CSV 和 Json 的文件类型为采样自动推断获取,而 ORC 和 Parquet 格式一般自带结构类型。

因此,在预览失败的情况下,可以根据报错做先行排查。

Q:数据文件由于类型复杂,导致推断的字段类型与表结构类型总是不符合怎么办?
对于 CSV 文件和 Json 文件,我们会对其中的数据进行类型推断。假设表的一个列类型为 int,如果一个待导入的文件字段大部分是 int,但是其中夹杂了一个字符串如 test。在这种情况下,直接贸然导入,此时该行的 test 会被认为是非法的 int,从而导入到表格中变成了 NULL。
因此文件导入对于类型无法正确推断的文件,在不匹配的情况下禁止导入。 对于这种情况,我们更推荐对导入的 CSV 做数据清洗,或者使用 ORC 和 Parquet 的格式确保类型兼容。

对于 CSV / Json 类型文件,数据导入功能会按照整个文件的类型的兼容性等级,按最普遍兼容的格式定义为推断类型。在上述情况下,如果同时有 int 和 string,那么最终认为的文件该列的类型推断为string。此时如果对应列的表字段类型为 int,则会显示表字段与文件字段不兼容。并且这种情况,只有确保导入文件的数据格式完全规范才能进行。 针对大部分情况,我们推荐纯字符的列使用 string,整数列使用 bigint,而浮点数列使用 double,以获得最好的兼容性。对于混合的类型列,推荐预先做数据清洗。

Q:如何强制导入不兼容的数据类型?例如 csv 里面的某列同时有 string int 类型的数据,而被导入的目标表都是 int 类型,但是仍然希望导入 LAS 表,并且可以接受不规范数据为 NULL 的情况?
由于目前文件导入的格式类型校验比较严格,针对这种情况,如果已经参考了 FAQ 第 2 条的情况,并且仍然无法做数据清洗,但是非常希望导入 LAS。您还可以使用创建外表的方式做间接导入。
您可以先将该 CSV 文件上传至火山对象存储服务 TOS,在数据管理页面创建表 ,选择外表sourceTosTable 并设置 TOS 路径,在创建外表的时候,您可以强制定义数据类型结构。 然后您可以在 LAS-查询分析,通过通过 SQL 的方式使用 insert into targetTable select * from sourceTosTable, 即可做到间接将文件按照你想要的文件类型写入 LAS 表。

Q:导入任务失败,内部报错 csv 不支持 array 报错怎么办?
对于 CSV 文件的外表,目前无法直接通过文件导入功能进行写入。