在進行數據導入導出的時候,總是會碰到 一些問題。
比如空表無法導出,中文亂碼這些,日常工作中用的又比較多,不想再忍了,所以來總結一下。
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;