首页 > 解决方案 > 我可以让 Snowflake 从所有 CSV 列和第一行作为标题创建阶段吗?

问题描述

目前,当我从 CSV 创建阶段时,我需要通过 $column_position手动指定列,然后为每个列设置别名。

例如 CSV 标头:employer_code、employer_name...等。选择语句:SELECT $1 雇主代码、$2、雇主名称...等。

我一直在查看文档中的选项并寻找这个答案,但我似乎找不到基本上会采用的选项;

  1. CSV 中的每一列,以及
  2. 第一行数据作为表头值

这似乎应该是可用的 OoTB 的东西,但看不到如何工作。

有什么线索吗?

提前谢谢。

标签: snowflake-cloud-data-platform

解决方案


在这里找到一个基本上可以满足您要求的雪花:

https://github.com/Snowflake-Labs/Excelerator/blob/master/SnowflakeExcelAddin_Stored_Procedures.sql

UDF 的名称是create_table_from_file_and_load_work()- 它最好从暂存文件中猜测标题和数据类型。

它允许您使用文件的第一行作为数据类型或列的名称:

  firstColumnFromFirstowFromFile = arrayFirstRow[0].toUpperCase();

// 检查第一个 col 是否为数据类型。如果不是,那么它的列标题

如果未提供每列的类型,get_datatype()则调用 UDF - 这是最好的猜测。


推荐阅读