今天发现原来exp命令除了可以导出整个表的数据,也可以导出某张表的部分数据.
环境:Oracle 10g
例如:
网上的例子:
$exp scott/tiger tables=emp query=\"where job=\'salesman\' and sal\<1600\" file=/directory/scott2.dmp
自己实验的例子:
exp wy/wy@dev tables="student" query=\"where t_id=112\" file=d:/student.dmp
在调试过程中出现过如下错误:
1)ORACLE-00911: 无效字符 错误原因 我把 query=写成了\"where t_id\=112\" ,等号不需要转义
2)IMP-00058: ORACLE 错误12560出现
ORA-12560: TNS: 协议适配器错误
IMP-00000: 未成功终止导入 错误原因 没有加实例服务名 @dev
3)导出时出现EXP-00091 警告 (不影响导出的dmp文件,可以忽略)
错误原因 我們exp工具所在的環境變量中的NLS_LANG與DB中的 NLS_CHARACTERSET不一致
去除警告办法
step 01 查看DB中的NLS_CHARACTERSET的值(提供兩種方法):
select * from nls_database_parameters t where
t.parameter='NLS_CHARACTERSET'
or
select * from v$nls_parameters where
parameter='NLS_CHARACTERSET';
SQL> select * from v$nls_parameters where
parameter='NLS_CHARACTERSET';
PARAMETER VALUE
----------------------- -------------------------
---------------------
NLS_CHARACTERSET ZHT16BIG5
step 02 根據step 01查出的NLS_CHARACTERSET(ZHT16BIG5)來設定
exp的環境變量:
WINNT> set NLS_LANG=AMERICAN_AMERICA.ZHT16BIG5
LINUX> export NLS_LANG=AMERICAN_AMERICA.ZHT16BIG5