存在将Excel文件(.xls、.xlsx)加载到Snowflake中的用例。使用SnowSQL PUT命令,我可以将文件加载到Stage(用户阶段),并且到目前为止运行良好。下一步是使用COPY INTO命令从用户阶段加载到Snowflake表。问题是Snowflake中没有FILE_FORMAT可用于指定XLS类型数据。我不想转换CSV格式的XLS,这是FILE_FORMAT类型的可用选项。任何线索如何可以做到这一点,而不修改源Excel文件?
wqlqzqxt1#
Snowflake不支持从Excel文件直接加载数据。您必须将源文件转换为支持的格式。https://docs.snowflake.com/en/sql-reference/sql/create-file-format.html
slhcrj9b2#
我同意将数据转换为CSV容易出错。虽然Snowflake选项不是“原生”的,但Snowflake确实有一个python连接器,并且有许多python excel库。下面是Snowflake的参考:python-connector-pandas和一个库示例:pandas.read_excel考虑到您随后对excel工作簿中的多个工作表和文件数量的评论,我认为编程解决方案是最好的选择。
oknwwptz3#
备选办法1:1.转换你的文件到CSV 2.put你的文件到数据湖或s3 bucket1.创建文件格式1.载入你的csv文件使用复制命令https://docs.snowflake.com/en/sql-reference/sql/copy-into-table.html备选方案二:1.将excel转换为csv。1.转到UI创建文件格式x1c 0d1x1.点击表格--〉加载表格
1.选择文件
1.选择文件格式
1.加载选项x1c4d 1x
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()
0s0u357o5#
晚回答,但在这里。我有一个电源自动桌面流,利用Snowsql自动加载csv文件到 snowflake 。对于大文件,请选择按nn M行分割文件,以利用大卷的快速加载。该应用程序不检测数据类型,它将数据加载为字符串,您应该有 snowflake 或DBT设置来将数据处理到您的生产材料中。checkout https://github.com/paddelia1/csvToSnowflakeenter image description here
qmb5sa226#
正如其他用户所建议的,解耦工作表并将每个工作表转换为CSV可能是您的用例最有保证的选择。或者,您可以使用预构建的转换服务进行加载--这些转换服务/工具与snowflake紧密集成。其优点是,其中一些工具提供了一种方法,可以在提取数据集后立即对其进行处理,然后再将其推回到 snowflake DW中。这样你就可以随时查看你的摘录了。我和一个团队一起工作,试图迎合这个特殊的痛点。我们目前支持JSON,CSV的轻松加载,并可能在不久的将来也支持Excel。如果您感兴趣,可以尝试the CSV feature here,如果它有帮助的话。
6条答案
按热度按时间wqlqzqxt1#
Snowflake不支持从Excel文件直接加载数据。您必须将源文件转换为支持的格式。https://docs.snowflake.com/en/sql-reference/sql/create-file-format.html
slhcrj9b2#
我同意将数据转换为CSV容易出错。虽然Snowflake选项不是“原生”的,但Snowflake确实有一个python连接器,并且有许多python excel库。下面是Snowflake的参考:python-connector-pandas和一个库示例:pandas.read_excel
考虑到您随后对excel工作簿中的多个工作表和文件数量的评论,我认为编程解决方案是最好的选择。
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
wnvonmuf4#
首先你需要用Python处理你的excel文件,然后把数据加载到Snowflake中。请使用下面的代码:
最后:连接.关闭()引擎.dispose()
0s0u357o5#
晚回答,但在这里。我有一个电源自动桌面流,利用Snowsql自动加载csv文件到 snowflake 。
对于大文件,请选择按nn M行分割文件,以利用大卷的快速加载。该应用程序不检测数据类型,它将数据加载为字符串,您应该有 snowflake 或DBT设置来将数据处理到您的生产材料中。
checkout https://github.com/paddelia1/csvToSnowflakeenter image description here
qmb5sa226#
正如其他用户所建议的,解耦工作表并将每个工作表转换为CSV可能是您的用例最有保证的选择。
或者,您可以使用预构建的转换服务进行加载--这些转换服务/工具与snowflake紧密集成。
其优点是,其中一些工具提供了一种方法,可以在提取数据集后立即对其进行处理,然后再将其推回到 snowflake DW中。
这样你就可以随时查看你的摘录了。
我和一个团队一起工作,试图迎合这个特殊的痛点。我们目前支持JSON,CSV的轻松加载,并可能在不久的将来也支持Excel。
如果您感兴趣,可以尝试the CSV feature here,如果它有帮助的话。