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存入数据的时候 ...
随机推荐
- linux查询健康状态,如何直观的判断你的Linux系统是否健康
一提到对于查看系统运行的健康状况,可能大多数朋友考虑到的就是查看进程或者打开任务管理器,但是对于应用在真实生产环境中服务器的linux系统来说,以上两种方式都不是***效的查看方式,那么今天就给大家推 ...
- liunx 安装ActiveMQ 及 spring boot 初步整合 activemq
源码地址: https://gitee.com/kevin9401/microservice.git 一.安装 ActiveMQ: 1. 下载 ActiveMQ wget https://arch ...
- FindUserByPageServlet
package com.hopetesting.web.servlet;import com.hopetesting.domain.PageBean;import com.hopetesting.do ...
- java中的迭代器的含义
可迭代是Java集合框架下的所有集合类的一种共性,也就是把集合中的所有元素遍历一遍.迭代的过程需要依赖一个迭代器对象,那么什么是迭代器呢? 迭代器(Iterator)模式,又叫做游标模式,它的含义是, ...
- 赋能开发:捷码携手达内教育打造IT职业教育新生态
近日,达内教育与远眺科技签约联合培养的第一批低代码开发方向的高职学生,在杭州未来科技城捷码总部顺利毕业,首期合格学员总数超过30名.随着这些接受了"捷码"低代码平台全程" ...
- Lock 锁的实现
锁的种类 自旋锁(spinlock):无法获得锁,就一直循环获取,适合短时间的加锁 睡眠锁(sleeplock):为了防止长时间的循环等待,在获取不到锁时,进程陷入睡眠,当锁释放时对睡眠进程进行唤醒 ...
- C#ADO.NET技术总结
[ADO.NET的主要组件-..NET framework数据提供程序和DataSet(数据集)] 一.DataSet数据集负责对数据库执行命令. 二.NET framework数据提供程序的四个核心 ...
- input type="file"多图片上传
单个的input type="file"表单也是可以实现多图片上传的 代码如下: <form action="manypic.php" method=&q ...
- ciscn_2019_s_9
很简单的一道题 例行检查 没有开启nx保护,就想到了shellcode来做 很明显的栈溢出 唯一的要求就是shellcode长度不能超过0x24 通过jump跳转到shellcode的位置 完整exp ...
- 钉钉提供的内网穿透之HTTP穿透
此方法无需自行提供服务器和域名 官方地址:https://developers.dingtalk.com/document/resourcedownload/http-intranet-penetra ...