如何将Excel文件数据加载到Snowflake表中

问题描述 投票:0回答:6

有一个将 Excel 文件(.xls、.xlsx)加载到 Snowflake 的用例。

使用 SnowSQL PUT 命令,我可以将文件加载到阶段(用户阶段),并且在这一点之前它工作正常。下一步是使用 COPY INTO 命令从 User Stage 加载到 Snowflake Table。问题是 Snowflake 中没有可用的 FILE_FORMAT 来指定 XLS 类型数据。

我不想将 XLS 转换为 CSV 格式,这是 FILE_FORMAT 类型的可用选项。 知道如何在不修改源 Excel 文件的情况下完成这项工作吗?

excel snowflake-cloud-data-platform xls
6个回答
0
投票

截至目前,Snowflake 不支持直接从 Excel 文件加载数据。您必须将源文件转换为受支持的格式。 https://docs.snowflake.com/en/sql-reference/sql/create-file-format.html


0
投票

我同意将数据转换为 CSV 很容易出错。虽然 Snowflake 选项不是“原生”的,但 Snowflake 确实有一个 python 连接器,并且有许多 python excel 库。这是关于此的 Snowflake 参考:python-connector-pandas 和一个库示例:pandas.read_excel

鉴于您随后对 excel 工作簿中的多个工作表和文件数量的评论,我认为编程解决方案是最佳选择。


0
投票

选项一:

  1. 将文件转换为 CSV 2.将您的文件放入数据湖或s3bucket
  2. 创建文件格式
  3. 使用复制命令加载您的 csv 文件https://docs.snowflake.com/en/sql-reference/sql/copy-into-table.html

选项2:

  1. 将 excel 转换为 csv.

  2. 转到 UI 创建文件格式

  3. 点击表格-->载入表格

  4. 选择文件

  5. 选择文件格式

  6. 加载选项


0
投票

首先你必须使用 Python 处理你的 excel 文件,然后将数据加载到 Snowflake。请使用以下代码:

from sqlalchemy import create_engine
import pandas as pd
snowflake_username = 'username'
snowflake_password = 'password'
snowflake_account = 'accoutname'
snowflake_warehouse = 'warehouse'
snowflake_database = 'database'
snowflake_schema = 'public'

engine = create_engine(
'snowflake://{user}:{password}@{account}/{db}/{schema}?warehouse= 
    {warehouse}'.format(
     user=snowflake_username,
     password=snowflake_password,
     account=snowflake_account,
     db=snowflake_database,
     schema=snowflake_schema,
     warehouse=snowflake_warehouse,
    ),echo_pool=True, pool_size=10, max_overflow=20
)

try:
 connection = engine.connect()

 df_sensor.columns = map(str.upper, df_sensor.columns)
 df_sensor.to_sql('tb_equipments'.lower(), con=connection, 
 schema='public', index=False, if_exists='append', chunksize=16000)
 results = connection.execute('select count(1) from 
 tb_equipments').fetchone()

print('\nTotal de linhas inseridas: ',results[0], '\n')

最后: 连接.close() 引擎.dispose()


0
投票

迟到的答案,但在这里。我有一个 Power Automate Desktop 流程,它利用 Snowsql 自动将 csv 文件加载到 Snowflake。

对于大文件,选择 nn M 行拆分文件以利用大容量的快速加载。 该应用程序不检测数据类型,它以字符串形式加载数据,您应该设置雪花或 DBT 以将数据处理到您的生产资料中。

退房 https://github.com/paddelia1/csvToSnowflake enter image description here


0
投票

正如其他用户所建议的那样,解耦工作表并将每个工作表转换为 CSV 可能是您用例最有保障的选择。

或者,您可以使用预构建的转换服务进行加载 - 与雪花紧密集成的转换服务/工具。

优点是,其中一些工具提供了一种方法,可以在提取数据集后立即处理数据集,然后再将其推回雪花 DW。

这样您就可以即时查看摘录。

我和一个团队一起工作,试图迎合这个特殊的痛点。我们目前支持轻松加载 JSON、CSV,并可能在不久的将来增加对 excel 的支持。

如果您有兴趣,可以在此处尝试CSV 功能,如果有帮助的话。

© www.soinside.com 2019 - 2024. All rights reserved.