首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DataFrame to_sql None导致Oracle错误: ORA-00932:数据类型不一致:获得CLOB的预期数量

DataFrame to_sql None导致Oracle错误: ORA-00932:数据类型不一致:获得CLOB的预期数量
EN

Stack Overflow用户
提问于 2019-05-17 15:17:06
回答 1查看 1.4K关注 0票数 1

我正在尝试将Daraframe数据插入到Oracle表中,但得到错误"ORA-00932:不一致的数据类型:获得CLOB的预期数量“。它是由数据库中的一列引起的,该列是Number类型且可以为None,而我在Daraframe中该列的数据是None。

我的原始数据来自sqlite3。我用谷歌搜索了很多地方,人们说sqlalchemy在处理Oracle的日期时间类型时可能有问题。我试着逐个删除列,实际上,date time列是可以的,但是Oracle数据库中有一列是Number和Nullable,而我对该列的Daraframe是None。如果我删除了这一列,那么一切都很好。

代码语言:javascript
运行
复制
try:
  dest_server_cnn.begin_nested()
  cdf.to_sql(name=tab['table'].lower(), con=dest_server_cnn, if_exists='append', index=False)
  pbar.update(total)
except:
  e_type, e_message, e_traceback = sys.exc_info()
  failed_count += total

例外情况

代码语言:javascript
运行
复制
<class 'sqlalchemy.exc.DatabaseError'> Error: (cx_Oracle.DatabaseError) ORA-00932: inconsistent datatypes: expected NUMBER got CLOB
[SQL: INSERT INTO alloc_test ....]

我不能为该列赋值,因为该值与业务逻辑相关联。那么我该如何处理这个None列呢?

EN

回答 1

Stack Overflow用户

发布于 2019-05-17 15:47:19

我找到了原因和解决方案。这是因为Pandas在读取空列时将所有列、字符串和int都视为对象。

我必须将列转换为整数,然后它才能工作。

代码语言:javascript
运行
复制
to_sql(... dtype={"int column with null": Integer()})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56181433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档