在进行数据导入导出的时候,总是会碰到 一些问题。
比如空表无法导出,中文乱码这些,日常工作中用的又比较多,不想再忍了,所以来总结一下。
1、查看数据库编码
SQL> select userenv(‘language’) from dual;
USERENV(‘LANGUAGE’)
————————————————————
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
2、查看客户端编码并设置
windows:
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
linux:
查看(env|grep NLS_LANG)
如果以上命令是空白或者和oracle的不相同,执行命令
export NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
确保客户端和服务器上字符集一致,这样导出的数据文件才不会出现中文乱码。
3、导出导入工具imp,exp
exp username/pwd@ip:1521/orcl file='E:\back.dmp' log='E:\back.log' full=y
imp username/pwd file='/db/oracle/oradata/back.dmp' log='/db/oracle/oradata/back.log' ignore=y
备注:导入和导出时均需要让客户端与服务器的编码保持一致
用这个工具,会发现空表不能导出,那接着看!
4、导出导入工具impdp,expdp
首先还是要设置字符集
SQL>select * from dba_directories;
SQL>create directory dpdata as '/opt';
grant read,write on directory dpdat to username;
expdp username/pwd schemas=username dumpfile=back.dmp DIRECTORY=dpdata logfile=back.log full=y version=11;
impdp username/pwd dumpfile=back.dmp DIRECTORY=dpdata logfile=back.log full=y version=11;