我是靠谱客的博主 有魅力芹菜,最近开发中收集的这篇文章主要介绍oracle从gbk导出后导入utf8,zhs16gbk的dmp导入到utf8字符的库中,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

将原来的zhs16gbk 导出的dmp 导入到utf-8的库中

验证当前的字符集

select * from v$nls_parameters

select name,value$ from sys.props$ where name='NLS_CHARACTERSET'

问题

IMP-00019: 由于 ORACLE 错误 12899 而拒绝行

IMP-00003: 遇到 ORACLE 错误 12899

ORA-12899: 列 ****的值太大 (实际值: 11, 最大值: 10)

原因

中文在UTF8里占3个字节,ZHS里占2个字节。

length求得是字符长度,

lengthb求得是字节长度。

SELECT 'EN', length('EN') x, lengthb('EN') xb FROM dual;

2         2

英文的长度 两种字符集下不变

SELECT '中文', length('中文') x, lengthb('中文') xb FROM dual;

中文   x   xb

2   4

utf-8库

SELECT '中文', length('中文') x, lengthb('中文') xb FROM dual;

中文   x   xb

2   6

解决:

在原zhs库中

得到批量修改语句

select 'alter table ' || utc.table_name || ' modify ' || utc.column_name ||

' varchar2('||utc.data_length*2||');'

from user_tab_cols utc  WHERE  utc.column_name!='ID' and  data_type='VARCHAR2'

批量加大字段的长度后 再导出  dmp 然后导入到utf-8字符集的库中

最后

以上就是有魅力芹菜为你收集整理的oracle从gbk导出后导入utf8,zhs16gbk的dmp导入到utf8字符的库中的全部内容,希望文章能够帮你解决oracle从gbk导出后导入utf8,zhs16gbk的dmp导入到utf8字符的库中所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部