您的位置:首页 > 数据库 > Oracle

更改oracle字符集

2011-08-22 15:23 357 查看
原来的字符集是GBK类型,或者是台湾的中文字符集,中文字符集很容易出现个别的汉子乱码。但是线上的oracle实例,因为与UTF8字符集又没有子集的关系,所以没有办法直接更改oracle实例字符集。所以只好先把原来的oracle数据导出来。新建一个数据库实例,然后先IMP导入了table的结构。加上参数rows=n

修改varchar2类型的栏位,把大小改为2倍,因为原本一个汉子是2字节,utf8一个汉子存储占用3字节。所以直接导入的话,会造出栏位太小,存储不下。这个可是使用lengthb函数来验证。

修改栏位大小的语法

select 'alter table ' || table_name || ' modify ' || column_name ||
' varchar2(' || case
when data_length > 2000 then
4000
else
(2 * data_length)
end || ');'
from user_tab_columns
where data_type = 'VARCHAR2'
and table_name in
(select table_name from all_tables where owner = 'BHEXPRESS')
order by table_name;


  用PL/SQL,把查询的结果拷贝到一个记事本上,然后大概以700条以下的语句来更改(过多会造成死机)。

全部更新完栏位的大小后,再一次IMP,把数据导进即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: