因客户现场要求,需要将部分=数据表进行迁移,但发现客户源数据库为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,仅导入表数据。

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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐