zoukankan      html  css  js  c++  java
  • Oracle :value too large for column "SCHEMA"."TABLE"."COLUMN" (actual: 519, maximum: 500)的解决方案

    原因:我是使用 CREATE TABLE XXX AS subquery 进行创建的数据表,主要是将相关的数据聚合在一起,然后通过导出为SQL脚本文件,进行导入到新库中,导致部分INSERT INTO语句,因数据库字符集的不一致生成的CREATE TABLE表结构的字段类型长度不一致,从而会插入失败value too large for column "SCHEMA"."TABLE"."COLUMN" (actual: 519, maximum: 500) ;因为长度不兼容

    解决方法就是在对应SELECT的出错字段上,使用CONVERT转换字符集或者使用CAST将类型的长度设置大点,然后CREATE TABLE会根据你设置的字段类型为表结构的类型;但是使用CONVERT转换字符集后,进行查询会导致 ORA-29275: partial multibyte character 错误。

    所以我这边解决的方式是使用CAST转换类型吧

    CREATE TABLE XXX AS

    SELECT CAST(col AS VARCHAR(1000)),... FROM xxx;

    CAST函数文档:https://docs.oracle.com/database/121/SQLRF/functions024.htm#SQLRF00613

    使用CONVERT函数示例:

    CREATE TABLE XXX AS

    SELECT CONVERT(col,'AL32UTF8'),... FROM xxx;

    CONVERT函数文档:https://docs.oracle.com/database/121/SQLRF/functions041.htm#SQLRF00620

    如果只执行CONVERT的SELECT子句,会出错 ORA-29275: partial multibyte character ,但是 CREATE TABLE XXX AS SELECT 一起执行,不会出错,但是查询生成的表也会报错ORA-29275。

    复制请注明出处,在世界中挣扎的灰太狼
  • 相关阅读:
    flex属性导图
    html代码换行造成空格间距问题
    iconfont作用在css伪类中的写法
    JS模态框 简单案例
    JS实时获取输入框中的值
    JS封装addClass、removeClass
    特效 左右滑动轮播图jQuery思路
    JS 字符串两边截取空白的trim()方法的封装
    JavaScript易混淆知识点小回顾--数组方法与字符串方法;
    用GitHub来展示前端页面
  • 原文地址:https://www.cnblogs.com/XingXiaoMeng/p/15722886.html
Copyright © 2011-2022 走看看