Python 使用SQLAlchemy将dataframe推送到db2数据库时出错

Python 使用SQLAlchemy将dataframe推送到db2数据库时出错,python,pandas,sqlalchemy,db2,Python,Pandas,Sqlalchemy,Db2,我有一个外形为3200 x 8的数据框。我试图使用sqlalchemy将其推送到IBM的DB2数据库。其中一列包含可变长度的文本,可以将其视为包含表情符号的英语句子/注释,以及包含其他数据类型的其他一些列。总而言之,考虑DATAFRAM是一个大的尺寸。< /P> 仅供参考,我已经配置了引擎,使用少量数据,看起来还不错 当我这样做的时候 df.to_sql(name="my_table", con=db2_engine,index=False,if_exists='append') 我犯了个错误

我有一个外形为3200 x 8的数据框。我试图使用sqlalchemy将其推送到IBM的DB2数据库。其中一列包含可变长度的文本,可以将其视为包含表情符号的英语句子/注释,以及包含其他数据类型的其他一些列。总而言之,考虑DATAFRAM是一个大的尺寸。< /P> 仅供参考,我已经配置了引擎,使用少量数据,看起来还不错

当我这样做的时候

df.to_sql(name="my_table", con=db2_engine,index=False,if_exists='append')
我犯了个错误

DatabaseError:ibm_db_dbi::DatabaseError:Exception('SQLRowCount失败:[ibm][clidriver]CLI0125E函数序列错误。SQLSTATE=HY010 SQLCODE=-99999')

我尝试了to_sql的块选项,但没有成功

如何修复此错误

编辑:

这是my
pip冻结的输出

cachetools==4.1.0
certifi==2020.4.5.1
chardet==3.0.4
emoji==0.5.4
google-api-core==1.17.0
google-api-python-client==1.8.2
google-auth==1.14.2
google-auth-httplib2==0.0.3
google-auth-oauthlib==0.4.1
googleapis-common-protos==1.51.0
httplib2==0.17.3
idna==2.9
langdetect==1.0.8
oauthlib==3.1.0
protobuf==3.11.3
pyasn1==0.4.8
pyasn1-modules==0.2.8
pytz==2020.1
requests==2.23.0
requests-oauthlib==1.3.0
rsa==4.0
six==1.14.0
uritemplate==3.0.1
urllib3==1.25.9

@mao,我在编辑中添加了
pip freeze
,我希望这会为问题增加一些细节?共有8列,全部为CLOB类型。您认为根据长度,将此数据存储在无SQL中是否合理?请看,其中有一列包含英语句子,长度可以从1个单词(1个或更多字符)变为1个单词to可以是任意数量的单词(但实际上让它限制为500个单词),因为它是一个实时数据库,我正在从客户的评论部分刮取这些数据。其他栏目将列出文本中的一些重要单词和表情符号。希望这能回答你的问题。其次,是的,数据库的编码是UTF-8。请从Db2目录或
create table
语句中获取列长度。最有可能的是,至少有一行包含Db2拒绝的内容,并且该异常没有得到正确处理(由某个组件处理),这会导致下一个操作抛出CLI0125E。您需要找到导致症状的第一行,并使用CLI跟踪查看真正的异常。如果您找到导致症状的第一行,其他人可以重新创建并修复问题。CLOB(适用于Linux/Unix/Windows上的Db2)可以定义为最大(2GB-1字节),但如果数据太短,则会出现问题。@mao,我在编辑中添加了
pip freeze
,我希望这将为问题增加一些细节?共有8列,所有列都是CLOB类型。您认为根据长度将此数据存储在非SQL中是否合理?请参阅,其中有一列包含英语句子,长度可以从1个单词(1个或多个字符)到任意数量的单词不等(但实际上,我们可以限制在500字以内),因为它是一个实时数据库,我正在从客户端的评论部分获取这些数据。其他列将是文本中一些重要单词和表情的列表。希望这能回答您的问题。其次,是的,数据库的编码是UTF-8。请从Db2 catalog或从
create table
Statemens获取列长t、 最有可能的是,至少有一行包含Db2拒绝的内容,并且该异常没有得到正确处理(由某个组件处理),这将导致下一个操作抛出CLI0125E。您需要找到导致症状的第一行,并使用CLI跟踪查看真正的异常。如果找到导致症状的第一行,其他人可以重新创建并修复该问题。可以定义CLOB(适用于Linux/Unix/Windows上的Db2),其大小最大为(2GB-1byte),但如果数据太短,则会出现问题。