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。

    复制请注明出处,在世界中挣扎的灰太狼
  • 相关阅读:
    [Leetcode]@python 76. Minimum Window Substring
    [Leetcode]@python 75. Sort Colors
    HTNL表单
    第二天
    开学心德
    HTML表单
    网页制作
    2nd day
    开课心得
    CF10D/POJ2127 LCIS 题解
  • 原文地址:https://www.cnblogs.com/XingXiaoMeng/p/15722886.html
Copyright © 2011-2022 走看看