oracle不同字符集导入导出(GBK导入UTF8)
oracle不同字符集dmp导入导出(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,仅导入表数据。
完美导入,不放心的可以检查下数据表。
更多推荐
已为社区贡献1条内容
所有评论(0)