ORA-12899:value too large for column impdp数据导入报错
·
一、疑问:
问题:
数据导入过程报错【ORA-12899:value too large for column】
原因:
插入数据字段长度超过表字段设置长度
解释:
oracle字符集不同。ZHS16GBK字符集中文占2个字节,UTF-8字符集中文占3个字节
二、解决:
方法:如果新建数据库导入数据则修改数据库字符集,如果已有数据库则修改库中表字段长度。
注意:如果修改的数据库中已有数据请先导出,修改字符集后再导入。
步骤:
方法1:修改数据库字符集
1.查看数据库字符集
select * from v$nls_parameters where parameter = 'NLS_CHARACTERSET'
2.系统用户登录系统修改字符集
SQL>shutdown immediate;
SQL>startup mount;
SQL>ALTER SESSION SET SQL_TRACE=TRUE;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;
如果报错:ORA-12712: new character set must be a superset of old
character set ERROR at line 1:
【错误原因】:新字符集必须是老字符集的超集!
下面进行强制转换。
SQL>ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
SQL>shutdown immediate;
SQL>startup;
方法2:修改表字段长度:
SQL>ALTER TABLE 表名 modify 字段名 数据类型(字段长度);
例:
SQL>ALTER TABLE sys_user modify user_name VARCHAR2(32);
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)