使用文件上传创建或修改表

使用“使用文件上传创建或修改表”页,可以上传 CSV、TSV 或 JSON、Avro、Parquet 或文本文件以创建或覆盖托管的 Delta Lake 表。

可以在 Unity 目录或 Hive 元存储中创建托管的 Delta 表。

注意

还可以使用添加数据 UI使用 COPY INTO 从云存储加载文件。

重要

使用该 UI,可以通过从本地计算机导入小型 CSV、TSV、JSON、Avro、Parquet 或文本文件来创建 Delta 表。

  • 使用文件上传创建或修改表”页支持一次最多上传 10 个文件。
  • 上传的文件的总大小必须在 2 GB 以下。
  • 该文件必须是 CSV、TSV、JSON、Avro、Parquet 或文本文件,并且扩展名为“.csv”、“.tsv”(或“.tab”)、“.json”、“.avro”、“.parquet”或“.txt”。
  • 不支持压缩的文件,例如 ziptar 文件。

上传文件

  1. 单击 New Icon新建 > 添加数据
  2. 单击“创建或修改表”。
  3. 请单击文件浏览按钮或直接在放置区域中拖放文件。

注意

导入的文件将上传到帐户中的安全内部位置,这里每天都会进行垃圾回收。

预览、配置和创建表

无需连接到计算资源即可将数据上传到暂存区域,但必须选择活动计算资源来预览和配置表。

配置上传表的选项时,可以预览 50 行数据。 单击文件名下的网格或列表按钮,可以切换数据的呈现方式。

Azure Databricks 将托管表的数据文件存储在为包含架构配置的位置中。 需要适当的权限才能在架构中创建表。

执行以下操作,选择要在其中创建表的所需架构:

  1. (仅针对支持 Unity Catalog 的工作区)你可以选择一个目录或旧版 hive_metastore
  2. 选择架构。
  3. (可选)编辑表名。

注意

可以使用下拉菜单来选择“覆盖现有表”或“创建新表”。 尝试创建存在名称冲突的新表的操作会显示一条错误消息。

可以在创建表之前配置选项

若要创建表,请单击页面底部的“创建”。

格式选项

格式选项取决于上传的文件格式。 常用格式选项显示在标题栏中,而不太常用的选项位于“高级属性”对话框中。

  • 对于 CSV,可以使用以下选项:
    • 第一行包含标题(默认情况下启用):该选项指定 CSV/TSV 文件是否包含标题。
    • 列分隔符:列之间的分隔符。 仅允许单个字符,且不支持反斜杠。 对于 CSV 文件,默认为英文逗号。
    • 自动检测列类型(默认情况下启用):自动检测文件内容中的列类型。 可以在预览表中编辑类型。 如果此选项设置为 false,则所有列类型均推断为 STRING
    • 行跨越多个行(默认情况下启用):一个列的值是否可以跨越文件中的多行。
    • 合并多个文件的架构:是否跨多个文件推理架构并合并每个文件的架构。 如果禁用,则会使用一个文件中的架构。
  • 对于 JSON,可以使用以下选项:
    • 自动检测列类型(默认情况下启用):自动检测文件内容中的列类型。 可以在预览表中编辑类型。 如果此选项设置为 false,则所有列类型均推断为 STRING
    • 行跨越多行(默认启用):一个列的值是否可以跨越文件中的多行。
    • 允许注释(默认启用):文件中是否允许注释。
    • 允许单引号(默认已启用):文件中是否允许单引号。
    • 推理时间戳(默认已启用):是否尝试将时间戳字符串推理为 TimestampType
  • 对于 JSON,可以使用以下选项:
    • 自动检测列类型(默认情况下启用):自动检测文件内容中的列类型。 可以在预览表中编辑类型。 如果此选项设置为 false,则所有列类型均推断为 STRING
    • 行跨越多个行(默认情况下启用):一个列的值是否可以跨越文件中的多行。
    • 允许注释:文件中是否允许注释。
    • 允许单引号:文件中是否允许单引号
    • 推断时间戳:是否尝试将时间戳字符串推断为 TimestampType

编辑格式选项时,数据预览会自动更新。

注意

上传多个文件时,以下规则适用:

  • 标头设置适用于所有文件。 确保标头在所有上传的文件中始终不存在或存在,以避免数据丢失。
  • 上传的文件通过将所有数据附加为目标表中的行来合并。 不支持在文件上传期间联接或合并记录。

列名称和类型

可以编辑列名称和类型。

  • 若要编辑类型,请单击该类型的图标。

    注意

    无法编辑 STRUCTARRAY 的嵌套类型。

  • 若要编辑列名,请单击列顶部的输入框。

    列名不支持逗号、反斜杠或 Unicode 字符(例如表情符号)。

对于 CSV 和 JSON 文件,在默认情况下会推断列数据类型。 可以通过禁用“高级属性”>“自动检测列类型”,将所有列解释为 STRING 类型。

注意

  • 架构推理可以尽力检测列类型。 如果某些值无法正确地强制转换为目标数据类型,则更改列类型可能会导致这些值强制转换为 NULL。 不支持将 BIGINT 强制转换为 DATETIMESTAMP 列。 Databricks 建议先创建一个表,然后使用 SQL 函数转换这些列。
  • 要支持具有特殊字符的表列名称,“使用文件上传创建或修改表”页可利用 列映射
  • 要向列添加批注,请创建表并导航到目录资源管理器,在其中添加批注。

支持的数据类型

使用文件上传创建或修改表”页支持以下数据类型。 有关各种数据类型的详细信息,请参阅 SQL 数据类型

数据类型 说明
BIGINT 8 字节带符号整数。
BOOLEAN 布尔(truefalse)值。
DATE 由字段 year、month 和 day 的值构成的值,不包含时区。
DOUBLE 8 字节双精度浮点数
STRING 字符串值。
TIMESTAMP 由字段 year、month、day、hour、minute 和 second 的值构成的值,包含会话本地时区。
STRUCT 值,其结构通过一系列字段来描述。
ARRAY 值,包含具有类型的元素序列
elementType
DECIMAL(P,S) 具有最大精度 P 和固定位数 S 的数字。

已知问题

BIGINT 强制转换为 DATE(例如以“yyyy”格式表示的日期)等不可强制转换的类型可能会引发错误。