Python DataFrame to_sql方法插入日期或时间类型的数据时 报ORA-01861 文字与字符串不匹配 的解决方法
业务团队近期提出一个需求:
希望在接口调用之前先批量插入Excel中的数据作为数据预置
这个需求以前已经开发完成 本来以为可以很快调试完毕
没成想遭遇一个难关
DataFrame.to_sql方法在执行过程中报ORA-01861 文字与字符串不匹配(着急解决问题,并没有来得及截图)
搞了一个下午+睡前一小时+今天上午一小时
终于弄清楚原因
业务方提供的数据格式不正确
看起来像是日期没有问题,但是是左对齐的日期,python会将其作为文本来处理
截图如下:

另外在dtype字段也做了简单处理
代码如下:
def mapping_df_types(self,df):
dtypedict = {}
for i, j in zip(df.columns, df.dtypes):
print("df.columns的值为{}".format(i))
print("df.dtypes的值为{}".format(j))
if "date" in str(i).lower(): # 2021/10/19调试:解决ORA-01861文字与格式字符串不匹配的问题
dtypedict.update({i: DATE})
if "object" in str(j):
if "time" in str(i).lower():
dtypedict.update({i: DATE})
else:
dtypedict.update({i: VARCHAR(256)})
if "float" in str(j):
dtypedict.update({i: NUMBER(19,8)})
# if "datetime64[ns]" in str(j):
# dtypedict.update({i:DATE})
# if "int" in str(j):
# dtypedict.update({i:VARCHAR(19)})
# print(dtypedict)
return dtypedict
def put_df_toOracle(self, tableName, dbaddr):
df = self.get_DataFrame()
engine = create_engine(dbaddr, encoding='utf-8', echo=True)
dtypedict = self.mapping_df_types(df)
try:
# 20210415增加schema参数,待验证,excel中表名需要删除schema.(info.)
df.to_sql(tableName, engine, schema=self.schema_name, index=False, if_exists='append', dtype=dtypedict, chunksize=None)
except Exception as e:
print(e)
特此记录一下,以便下次遇到可以快速解决
Python DataFrame to_sql方法插入日期或时间类型的数据时 报ORA-01861 文字与字符串不匹配 的解决方法的更多相关文章
- Python学习(12)日期和时间
目录 Python 日期和时间 时间元组 获取当前时间 获取格式化时间 格式化日历 获取某月日历 Time模块 日历模块 其他相关模块和函数 Python 日期和时间 Python 程序能用很多方式处 ...
- Java 向MySql 插入日期和时间正确的姿势
Mysql和Java之间时间对应关系表: date java.sql.Date Datetime java.sql.Timestamp Timestamp ...
- [Swift通天遁地]五、高级扩展-(3)日期和时间类型的扩展方法
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- MySQL数据类型--日期和时间类型
MySQL中的多种时间和格式数据类型 日期和时间类型是为了方便在数据库中存储日期和时间而设计的.MySQL中有多种表示日期和时间的数据类型. 其中,year类型表示时间,date类型表示日期,time ...
- SQL Server的日期和时间类型
Sql Server使用 Date 表示日期,time表示时间,使用datetime和datetime2表示日期和时间. 1,秒的精度是指使用多少位小数表示秒 DateTime数据类型秒的精度是3,D ...
- SQL Server 日期和时间类型
在Microsoft SQL Server的类型系统中,使用 date 表示日期类型,使用time表示时间类型,使用DateTime和DateTime2表示日期和时间的组合,DateTime2是Dat ...
- mysql的五种日期和时间类型【转载】
[mysql的五种日期和时间类型] mysql(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期 ...
- PHPExcel对于Excel中日期和时间类型的处理
PHPExcel是一款优秀的处理Excel文件读写的开源PHP Library,能够给我们提供强大的Excel读写能力,本文针对Excel处理过程中关于日期和时间类型的处理进行深入的讨论.PHPExc ...
- 第二章 Mysql 数据类型简介--(整数类型、浮点数类型和定点数类型,日期与时间类型,字符串类型,二进制类型)
第一节:整数类型.浮点数类型和定点数类型 1,整数类型 2,浮点数类型和定点数类型 M 表示:数据的总长度(不包括小数点):D 表示:小数位:例如 decimal(5,2) 123.45存入数据的时候 ...
随机推荐
- ubuntu 使用mysql
一: 安装: sudo apt-get install mysql-serversudo apt-get install mysql-clientsudo apt-get install libmys ...
- 【模型推理】Tengine 模型转换及量化
欢迎关注我的公众号 [极智视界],回复001获取Google编程规范 O_o >_< o_O O_o ~_~ o_O 本文介绍一下 Tengine 模型转换 ...
- Mysql配置文件 binlog和慢日志
目录 binlog binlog_format log_slave_updates log-bin|log-bin-index expire_logs_days relay-log|relay-log ...
- MySQL如何随机筛选25000条数据
一.SELECT * FROM sheet1 t1 ORDER BY RAND() LIMIT 10000; 二.SELECT * FROM sheet1 AS t1 JOIN (SELECT ROU ...
- Sentry 开发者贡献指南 - 前端(ReactJS生态)
内容整理自官方开发文档 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Map ...
- 删除列Table.RemoveColumns(Power Query 之 M 语言)
数据源: "姓名""基数""个人比例""个人缴纳""公司比例""公司缴纳"&qu ...
- 用Word做表,总会多出一页来?(Word技巧集团)
用Word做表的同学都有这样的体验,表格后面都会多出一行,默认的,去都去不掉.如果一个表刚好做到一页的最下面,嗯,那就多出一页来,如下图: 这一页,多不多余啊,讨不讨厌啊,可不可恶啊--可是Word同 ...
- IDEA中springboot项目添加yml格式配置文件
1.先创建application.properties 文件,在resources文件夹,右键 new -> Resource Bundle 如下图所示,填写名称 2.生成如下图所示文件 3. ...
- JAVA在JDK1.8中Stream流的使用
Stream流的map使用 转换大写 List<String> list3 = Arrays.asList("zhangSan", "liSi", ...
- Vue父子组件通信(父级向子级传递数据、子级向父级传递数据、Vue父子组件存储到data数据的访问)
Vue父子组件通信(父级向子级传递数据.子级向父级传递数据.Vue父子组件存储到data数据的访问) 一.父级向子级传递数据[Prop]: ● Prop:子组件在自身标签上,使用自定义的属性来接收外界 ...