• 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)
    

      特此记录一下,以便下次遇到可以快速解决

  • 相关阅读:
    几款网络测试工具总结
    Linux安装telnet
    Linux下iptables 禁止端口和开放端口
    mysql创建某个数据库中的某张表 只读用户
    查看nginx版本号的几种方法
    Ngxtop-Nginx日志实时分析利器
    Nginx监控运维
    oracle经典书籍推荐
    华为典型局域网组网案例介绍(1)
    技术说明 路由器是如何工作的呢? 一个简单的解释
  • 原文地址:https://www.cnblogs.com/QianyuQian/p/15428091.html
Copyright © 2020-2023  润新知