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

u5rb5r59  于 2023-03-09  发布在  其他
关注(0)|答案(6)|浏览(358)

存在将Excel文件(.xls、.xlsx)加载到Snowflake中的用例。
使用SnowSQL PUT命令,我可以将文件加载到Stage(用户阶段),并且到目前为止运行良好。下一步是使用COPY INTO命令从用户阶段加载到Snowflake表。问题是Snowflake中没有FILE_FORMAT可用于指定XLS类型数据。
我不想转换CSV格式的XLS,这是FILE_FORMAT类型的可用选项。任何线索如何可以做到这一点,而不修改源Excel文件?

wqlqzqxt

wqlqzqxt1#

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

slhcrj9b

slhcrj9b2#

我同意将数据转换为CSV容易出错。虽然Snowflake选项不是“原生”的,但Snowflake确实有一个python连接器,并且有许多python excel库。下面是Snowflake的参考:python-connector-pandas和一个库示例:pandas.read_excel
考虑到您随后对excel工作簿中的多个工作表和文件数量的评论,我认为编程解决方案是最好的选择。

oknwwptz

oknwwptz3#

备选办法1:
1.转换你的文件到CSV 2.put你的文件到数据湖或s3 bucket
1.创建文件格式
1.载入你的csv文件使用复制命令https://docs.snowflake.com/en/sql-reference/sql/copy-into-table.html
备选方案二:
1.将excel转换为csv。
1.转到UI创建文件格式x1c 0d1x
1.点击表格--〉加载表格

1.选择文件

1.选择文件格式

1.加载选项x1c4d 1x

wnvonmuf

wnvonmuf4#

首先你需要用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')

最后:连接.关闭()引擎.dispose()

0s0u357o

0s0u357o5#

晚回答,但在这里。我有一个电源自动桌面流,利用Snowsql自动加载csv文件到 snowflake 。
对于大文件,请选择按nn M行分割文件,以利用大卷的快速加载。该应用程序不检测数据类型,它将数据加载为字符串,您应该有 snowflake 或DBT设置来将数据处理到您的生产材料中。
checkout https://github.com/paddelia1/csvToSnowflakeenter image description here

qmb5sa22

qmb5sa226#

正如其他用户所建议的,解耦工作表并将每个工作表转换为CSV可能是您的用例最有保证的选择。
或者,您可以使用预构建的转换服务进行加载--这些转换服务/工具与snowflake紧密集成。
其优点是,其中一些工具提供了一种方法,可以在提取数据集后立即对其进行处理,然后再将其推回到 snowflake DW中。
这样你就可以随时查看你的摘录了。
我和一个团队一起工作,试图迎合这个特殊的痛点。我们目前支持JSON,CSV的轻松加载,并可能在不久的将来也支持Excel。
如果您感兴趣,可以尝试the CSV feature here,如果它有帮助的话。

相关问题