exp,imp问题

来源:互联网 发布:淘宝网怎么打不开了 编辑:程序博客网 时间:2024/06/06 07:17

一:首先应该查询数据库的字符集

SQL> select * from nls_database_parameters where parameter='NLS_LANGUAGE' or parameter='NLS_TERRITORY' or parameter='NLS_CHARACTERSET';


我们知道NLS_LANG = language_territory.charset

Language指的是服务器消息语言,territory指的是服务器日期和数字,货币格式,charset指字符集。

知道了NLS_LANG的组成原理之后,就明白了,只要设置NLS_LANG中的charset一样,那么就不会产生导入导出的乱码问题

NLS_LANG中的language用来显示log中记录的语言


然后查看客户端字符集

SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
--------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.AL32UTF8

可以看到客户端字符集为AL32UTF8,所以导入导出是不会引起乱码的,不过由于客户端的language设置为SIMPLIFIED CHINESE,那么导入导出的log就会用中文的形式记录,如果和老外一起工作那么就设置AMERICAN_AMERICA.AL32UTF8,这样老外就能看懂log了


二:设置客户的字符集

如果是windows 直接在cmd中 set nls_lang=AMERICAN_AMERICA.AL32UTF8

如果是linux  要在shell中 export NLS_LANG=AMERICAN_AMERICA.AL32UTF8


exp选项:

buffer:下载数据缓冲区,以字节为单位,缺省依赖操作系统 
consistent:下载期间所涉及的数据保持read only,缺省为n 
direct:使用直通方式 ,缺省为n 
feeback:显示处理记录条数,缺省为0,即不显示 
file:输出文件,缺省为expdat.dmp 
filesize:输出文件大小,缺省为操作系统最大值 
indexes:是否下载索引,缺省为n,这是指索引的定义而非数据,exp不下载索引数据 
log:log文件,缺省为无,在标准输出显示 
owner:指明下载的用户名 
query:选择记录的一个子集 
rows:是否下载表记录 
tables:输出的表名列表 

imp选项:

buffer:上载数据缓冲区,以字节为单位,缺省依赖操作系统 
commit:上载数据缓冲区中的记录上载后是否执行提交 
feeback:显示处理记录条数,缺省为0,即不显示 
file:输入文件,缺省为expdat.dmp 
filesize:输入文件大小,缺省为操作系统最大值 
fromuser:指明来源用户方 
ignore:是否忽略对象创建错误,缺省为n,在上载前对象已被建立往往是一个正常现象,所以此选项建议设为y 
indexes:是否上载索引,缺省为n,这是指索引的定义而非数据,如果上载时索引已建立,此选项即使为n也无效,imp自动更新索引数据 
log:log文件,缺省为无,在标准输出显示 
rows:是否上载表记录 
tables:输入的表名列表 
touser:指明目的用户方 






0 0