用bat批处理导入dmp文件问题
最近公司做项目,需要在oracle数据库中建一个表空间和几个用户,然后导入一个dmp的表,为了省事,小弟做了做了个bat的批处理文件,执行一个create.bat文件,完成建立表空间、建用户等操作;执行imp.bat向库中导入数据。
第一个create.bat建表空间和用户没有任何问题,可以正确完成,可是在执行imp.bat导入数据的时候却遇到了问题,
imp.bat只有一条命令
imp aa/"***" fromuser=aa touser=aa file='e:\aa.dmp' log='e:\aa.log'
执行imp.bat后结果
******************************************************
E:\>imp aa/"123$\aa.dmp' log='aa.log'
E:\>imp aa/"123$\aa.dmp' log='aa.log'
E:\>imp aa/"123$\aa.dmp' log='aa.log'
E:\>imp aa/"123$\aa.dmp' log='aa.log'
E:\>imp aa/"123$\aa.dmp' log='aa.log'
E:\>imp aa/"123$\aa.dmp' log='aa.log'
E:\>imp smjzk/"123$\clientFinal.dmp' log='a.log'
终止批处理操作吗(Y/N)? ^C
******************************************************
imp命令不能执行,但是直接使用imp命令导入的时候可以正确导入,可是写入bat文件就不能执行。
————————————————————————
ps:在发帖的是否想到了问题的原因,因为我的imp.bat文件放在e:\,但是imp.exe的路径确实$oracle_home/bin,
所以执行imp.bat时会出错。
把imp.bat放到$oracle_home/bin目录下,执行后可以正确调用imp.exe但是,出现了其他的问题,
在命令提示符下执行 imp aa/"**" fromuser=aa touser=aa file='e:\aa.dmp' log='e:\aa.log'
可以正确导入数据,,但是批处理执行时会报错,
1。用户名、密码错误 ------重新输入后正确,但是批处理文件中的用户名、密码没有错误。 何解????
2。导入dmp文件错误,
IMP-00002: 无法打开 EXPDAT.DMP 进行读取,
输入后正确,
导入文件: EXPDAT.DMP> e:\aa.dmp 。
何解???
3.IMP-00031: 必须指定 FULL=Y 或提供 FROMUSER/TOUSER 或 TABLES 参数
指定参数full=y,后正确。
为什么在命令提示符下输入不需要此参数??????
——————————————
------解决方案--------------------批处理中应该在 / 前加转义符
imp aa^/"**" fromuser=aa touser=aa file="e:\aa.dmp" log="e:\aa.log"
------解决方案--------------------bat文件内容:
e:\oracle\product\10.2.0\db_1\bin\imp aa/*** fromuser=aa touser=aa file=e:\aa.dmp log=e:\aa.log
------解决方案--------------------密码中有特殊字符 %,用 %% 表示。
直接这样就可以,不用 cd ...
%ORACLE_HOME%\bin\imp smjzk/"123$
%%^" fromuser=smjzk touser=smjzk file="e:\clientFinal.dmp" log="a.log" full=y
------解决方案--------------------楼主我自己测试了一下是可以的,命令和你的大同小异:exp test/123@test file='e:\d.dmp' owner=test log='e.log' 10G+windows xp