To_SQL不认识雪花的块大小



我目前正在处理一个数据帧,该数据帧产生错误,即雪花一次导入的行太多。

我环顾四周,确实发现to_sql可以选择标记块大小。

但是,当我为此输入一个数字时,我收到此错误: sqlalchemy.exc.ProgrammingError: (snowflake.connector.errors.ProgrammingError) 100038 (22018): 无法识别数值"unknown">

这是我的代码,我认为它非常简单,我没有看到任何明显的错误:

engine = sqlalchemy.create_engine('snowflake://USERNAME:PASSWORD@SNOWFLAKE_LINK/DATABASE/SCHEMA?warehouse=WAREHOUSE&role=ROLE', connect_args = {'connect_timeout': 10}, echo=False)
df2.to_sql('TABLE', con=engine, schema='PUBLIC', index = False, if_exists = 'append', method= 'multi', chunksize=16384)  

当涉及到这一点时,这是 Snowflake 的一个怪癖,还是我需要使用 write_pandas 之类的东西来导入我的数据?

最终弄清楚了。

这是最终起作用的代码:

df2.to_sql('TABLENAME', con=cursor,  index = False, if_exists = 'append', method=pd_writer)

pd_writer似乎是我需要的方法,将超过 16K 行放入 Snowflake。

如果你想使用块,你也可以使用以下代码

import pandas as pd
def fetch_pandas_sqlalchemy(sql):
rows = 0
for chunk in pd.read_sql_query(sql, engine, chunksize=50000):
rows += chunk.shape[0]
print(rows)

最新更新