如何不修改源Excel文件将其数据加载到Snowflake表中
无需转换CSV、不修改源文件的Excel加载到Snowflake方案
Snowflake原生COPY INTO命令暂不支持直接指定XLS/XLSX格式的FILE_FORMAT,你可以通过以下方法直接解析已上传到用户Stage的Excel文件,全程不需要修改源文件:
- 优先使用Snowflake官方内置的
EXCEL_READER表函数(当前处于公共预览阶段,大部分区域版本已支持),直接读取Stage中的Excel文件写入目标表,示例代码如下:
INSERT INTO 你的目标表名 (列1, 列2, 列3) -- 按需替换为你实际的表结构字段 SELECT $1::VARCHAR AS 列1, -- 按需调整字段类型映射 $2::NUMBER AS 列2, $3::DATE AS 列3 FROM TABLE( EXCEL_READER( LOCATION => '@~/你上传的Excel文件名.xlsx', -- 替换为你Stage中的实际文件路径 SHEET_NAME => 'Sheet1', -- 替换为要加载的工作表名称,也可使用SHEET_INDEX按序号指定 HEADER_ROW => TRUE -- 如果Excel首行是表头,设置为TRUE会自动跳过首行,不需要的话设为FALSE ) );
- 如果你使用的Snowflake版本暂不支持
EXCEL_READER,可自行创建Python UDF完成Excel解析,Snowflake的Python运行环境已预装pandas、openpyxl等常用Excel解析库,不需要额外上传依赖包,解析全程在Snowflake内部完成,不会修改源文件。
注意事项
- 该方案仅读取Excel中单元格的存储值,如果你要加载的工作表包含公式,会自动读取公式计算后的最终结果,不会读取公式本身
- 如果你的Excel包含合并单元格、嵌套格式等特殊结构,建议先执行一次查询预览解析结果,确认字段映射符合预期后再执行写入操作
内容的提问来源于stack exchange,提问作者Mayank Jha
相关产品推荐
相关产品推荐

