ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Oracle :value too large for column "SCHEMA"."TABLE"."COLUMN" (actual:

2021-12-23 12:35:52  阅读:185  来源: 互联网

标签:CONVERT actual column CREATE XXX 519 CAST TABLE SELECT


原因:我是使用 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。

 

标签:CONVERT,actual,column,CREATE,XXX,519,CAST,TABLE,SELECT
来源: https://www.cnblogs.com/XingXiaoMeng/p/15722886.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有