在云中添加到现有表时出现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尝试安装它,但缺少文件(缺少大量依赖项)