在云中添加到现有表时出现Python和Snowflake错误

在云中添加到现有表时出现Python和Snowflake错误,python,snowflake-cloud-data-platform,pandas-to-sql,Python,Snowflake Cloud Data Platform,Pandas To Sql,我正在尝试将数据帧上载到雪花云中的现有表中。以下是数据帧: columns_df.head() 现在,当使用pandas中的to_sql()将数据追加到现有表中时: columns_df.to_sql('survey_metadata_column_names', index=False, index_label=None, con=conn, schema='PUBLIC', if_exists='append', chunksize=300) 我收到了以下错误: DatabaseEr

我正在尝试将数据帧上载到雪花云中的现有表中。以下是数据帧:

columns_df.head()

现在,当使用pandas中的
to_sql()
将数据追加到现有表中时:

columns_df.to_sql('survey_metadata_column_names', index=False,  index_label=None, con=conn, schema='PUBLIC', if_exists='append', chunksize=300)
我收到了以下错误:

DatabaseError:在sql“从sqlite\u主机选择名称”上执行失败 其中type='table'和name=?;':并非所有参数都在转换过程中转换 字符串格式

TypeError:在字符串格式化过程中并非所有参数都已转换

某些列名包含破折号和下划线。

来自

要将数据从熊猫数据帧写入雪花数据库,请执行以下操作之一:

  • 调用write_()函数
  • 调用pandas.DataFrame.to_sql()方法,并指定pd_writer作为将数据插入数据库的方法。
注意第二点<代码>写入_。我仍然注意到两种方法都存在一些问题,但这些是官方的解决方案

from snowflake.connector.pandas_tools import pd_writer
columns_df.to_sql('survey_metadata_column_names', 
                 index = False,  
                 index_label = None, 
                 con = Engine, #Engine should be an SQLAlchemy engine 
                 schema = 'PUBLIC', 
                 if_exists = 'append', 
                 chunksize = 300,
                 method = pd_writer)
或者

从snowflake.connector.pandas\u工具导入write\u pandas
con=雪花。连接器。连接(…)
成功,失败,失败,失败,失败,
列(df),,
“调查元数据列名称”,
块大小=300,
架构='PUBLIC')

请注意,第一种方法需要和
SQLAlchemy
引擎,而第二种方法可以使用常规连接。

这应该会有所帮助。您可以在临时表中使用一个大df来测试这一点<代码>con.execute('create temporary table…')和
timeit
。我希望它们几乎是等效的,它们使用相同的方法分割
数据帧
,将其保存到临时文件中的磁盘,使用
PUT@file
将文件上载到临时存储中,然后使用
复制到
。如果是这种情况,
write\u pandas
可能会略微提高性能,因为文档提示
pd\u writer
没有chunksize参数(
pandas
可能在调用函数之前分解帧)。从第二个方法中,我得到了此错误:
发生了以下错误:090106(22000):无法执行创建阶段。此会话没有当前架构。调用“使用模式”,或使用限定名称。
如果这是您的错误,我建议在打开连接时将模式添加到连接中<代码>连接(…,模式=…,数据库=…,仓库=…)。在不知道确切代码的情况下,我无法具体说明您的案例中出现了什么问题。此外,如果您有权访问雪花帮助中心,那么在那里提问将确保任何错误都能得到调查(可能在遥远的将来)。我们有比使用内置函数更具体的需求,所以我们在内部编写了自己版本的
write\u
(遗憾的是,我无法给出链接);尝试使用“pyarrow”、“fastparquet”。拼花支持需要pyarrow或fastparquet尝试安装它,但缺少文件(缺少大量依赖项)