azure 数据块SQL API:加载不带标头的csv文件

cld4siwp  于 2023-02-16  发布在  其他
关注(0)|答案(1)|浏览(152)

我尝试使用从云存储加载样本数据到表指南将csv文件(无标头)加载到增量表中,但我找不到任何如何定义源文件架构/标头的说明。

COPY INTO my_table
FROM '/path/to/files'
FILEFORMAT = <format>
FORMAT_OPTIONS ('inferSchema' = 'true')
COPY_OPTIONS ('mergeSchema' = 'true');

根据增量复制到和FORMAT_OPTIONS文档,我认为enforceSchema是正确的选择,但如何使用SQL API提供模式定义?

yqlxgs2m

yqlxgs2m1#

如果你的文件中没有头文件,Spark会自动为它们命名,比如_c0_c1,等等,并把它们放到表中。如果你想给予一个有意义的名字,你需要使用稍微不同的语法,使用SELECT选项,它将给你重命名列的能力,并在必要时进行类型转换。像这样(转换只是为了举例):

COPY INTO my_table FROM (
  SELECT _c0 as col1, cast(_c1 as data) as date, _c2 as col3, ... 
    FROM '/path/to/files'
)
FILEFORMAT = <format>
FORMAT_OPTIONS ('inferSchema' = 'true')
COPY_OPTIONS ('mergeSchema' = 'true');

另外,我不确定infrerSchema是否适合在这里使用,因为您可能需要执行强制转换等操作。

相关问题