使用to_sql将数据帧写入oracle时出错

时间:2016-03-17 18:58:24

标签: python oracle pandas

我尝试使用“to_sql”在数据库的现有表中写入数据框。

df.to_sql(name=table_name, con=eng, if_exists='append',index=True)

插入python时返回错误:

  

DatabaseError:ORA-00932:数据类型不一致:预计会有NUMBER个,   CLOB收到

取出看起来像这样的插入语句:

[SQL: 'INSERT INTO table_name (id, name, start, end) VALUES (:id, :name, :start, :end)']
[parameters: {'id': 5629, 'name': 'WNL', 'start': datetime.datetime(1990, 1, 1, 0, 0), 'end': '2010-01-01'}]

注意到“to_sql”将start视为日期时间并以字符串结尾。这两列都在oracle中定义为DATE类型。数据框是通过读取csv文件创建的。 Csv文件看起来像:

  

ID;名称;开始;端

     

5629; WNL; 1990-01-01; 2010-01-01

exetuting df.dtypes显示:

id                                    int64
name                                 object
start                        datetime64[ns]
end                                  object

我猜错误是因为数据类型而发生的。但是使用pandas.to_datetime()进行转换不会将对象更改为datetime64 [ns]。

是否有其他方法可以更轻松地更改数据类型或在数据库中写入? 请原谅这是一个愚蠢的问题。刚开始学习python。提前谢谢!

0 个答案:

没有答案