1

我正在尝试将数据框上传到雪花云中的现有表中。这是数据框:

columns_df.head()

在此处输入图像描述

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

columns_df.to_sql('survey_metadata_column_names', index=False,  index_label=None, con=conn, schema='PUBLIC', if_exists='append', chunksize=300)

我收到以下错误:

DatabaseError:执行失败 sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;':字符串格式化期间并非所有参数都转换

TypeError:字符串格式化期间并非所有参数都转换了

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

4

2 回答 2

1

看看我在此处发布的允许写入(创建和替换)和附加)的解决方案: write_pandas snowflake connector function is not able to operation on table

于 2021-08-24T23:37:03.810 回答
1

来自雪花文档

要将数据从 Pandas DataFrame 写入 Snowflake 数据库,请执行以下操作之一:

  • 调用 write_pandas() 函数。
  • 调用 pandas.DataFrame.to_sql() 方法,并指定 pd_writer 作为用于将数据插入数据库的方法。

注意第二点。write_pandas. 我仍然注意到使用这两种方法的几个问题,但这些是官方的解决方案。

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)

或者,

from snowflake.connector.pandas_tools import write_pandas
con = snowflake.connector.connect(...)
success, nchunks, nrows, _ = write_pandas(con, 
                                          columns_df, 
                                          'survey_metadata_column_names', 
                                          chunk_size = 300, 
                                          schema = 'PUBLIC')

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

于 2020-11-24T14:35:50.527 回答