oracle不同字符集导入导出(GBK导入UTF8)

        因客户现场要求,需要将部分=数据表进行迁移,但发现客户源数据库为gbk编码集,目的库字符集为utf8,正常导入会报错。

        报错原因:GBK 一个汉字占用两个字节,UTF8 一个汉字占用三个字节,所以导致不成功。

        解决思路:由于源数据库为客户数据库,无法做改动,故可以改变目的数据库表结构。

        建议:导入前目的库进行备份。

1、源数据库导出

a.命令连接数据库
    sqlplus test/test123@172.16.1.6:1521/testdb
b.导出
    exp test/test123@172.16.1.6:1521/testdb file=d:\daochu.dmp tables=table1;

2、目的库导入

a.首先将源数据库的表结构复制出来,目的库进行执行建表。

 b.字符集扩容

select 'alter  table '||t.TABLE_NAME||' modify '||t.COLUMN_NAME||' '||t.data_type||'('||ceil(t.DATA_LENGTH*1.5)||');' from user_tab_columns t
where  t.DATA_TYPE='VARCHAR2'
AND t.TABLE_NAME ='table1';

将查询出来的拼接语句,进行执行扩容即可。

        c.导入

a.命令连接数据库
    sqlplus test1/test1123@172.16.1.5:1521/testdb1
b.导出
    imp test1/test1123@172.16.1.5:1521/testdb1 data_only=y log=info.log file=d:\daochu.dmp tables=table1;

         导入参数说明:data_only=y,仅导入表数据。

        完美导入,不放心的可以检查下数据表。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值