首页 > 编程知识 正文

oracle数据库怎么改字符集,oracle修改字符集为utf8

时间:2023-05-06 10:33:34 阅读:175908 作者:4017

为了迁移数据库,必须将原始oracle备份文件导入新的oracle数据库。 导出EXP后,IMP报告了错误,字符串长度太长,报告了错误。 搜索结果显示,原始数据库为GBK字符集(oracle为varchar2类型,汉字1个字符为2位),新数据库为UTF8字符集),汉字1个字符为3位。

解决办法如下。 批量更改原始数据库中包含varchar2的所有字段的长度。

修正分为两个阶段,varchar2最长支持4000个长度。 如果存在carchar2的长度超过2667(4000*2/3)的部分,则可以修正为CLOB类型,或验证每个字段的最大使用长度,如果小于2667,则调整为4000即可。

批量修改方法如下。

createorreplaceprocedurep _ testas

CURSOR TEMP IS

SELECT TABLE_NAME,COLUMN_NAME,Ceil(DATA_LENGTH*3/2) data_length

FROM USER_TAB_COLUMNS

where data _ type=‘varchar 2’

和data _ length 2000;

STRVarchar2(100 ) :=‘‘“;

比根

FOR S IN TEMP LOOP

str :=‘alter table‘| s.table _ name |‘modify’| s.column _ name |

‘varchar 2’||data _ length||‘’‘;

DMS_output.put_line(str;

执行immediate str;

结束环路;

结束;

注:如果存在字段的函数索引,Oracle general ledger将报告错误,要求在执行批量更改之前删除函数索引。

最后,导出dmp并导入IMP即可。

原文: http://www.cn blogs.com/Huang en88/p/4664759.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。