最近公司做项目,需要在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,后正确。
为什么在命令提示符下输入不需要此参数??????——————————————
第一个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,后正确。
为什么在命令提示符下输入不需要此参数??????——————————————
直接在cmd命令行里面输入导入指令
参考
直接在cmd命令行里面输入导入指令
参考
-------pgameli-----
-------------------
不用bat可以,命令没有任何问题。
但是我为了偷懒写了bat,其中包括建表空间、建用户等很多操作(原谅我的懒惰),我现在建表空间写了一个bat,可以用;然后我在建表空间的bat里面调用导入数据的bat。
以为是环境变量的问题,但是理论上不应该是这个问题啊。向bat里边加了一条 “cd e:\oracle\product\10.2.0\db_1\bin”后,居然能调用imp了,但是提示imp的用户名、密码错误,dmp文件无法读取。根据命令提示输入用户名、密码、dmp文件路径后就可以导入了,并且能生成导入日志,很奇怪啊
cd e:\oracle\product\10.2.0\db_1\bin && pause && imp smjzk/"123$%^" fromuser=smjzk touser=smjzk file="e:\clientFinal.dmp" log="a.log" full=y
pause结果跟以前一样,连第一条命令 cd cd e:\oracle\product\10.2.0\db_1\bin也执行不了,**********************************
H:\test\imp>cd e:\oracle\product\10.2.0\db_1\bin && pause && imp smjzk/"123$
\clientFinal.dmp" log="a.log" full=y
请按任意键继续. . .H:\test\imp>cd e:\oracle\product\10.2.0\db_1\bin && pause && imp smjzk/"123$
\clientFinal.dmp" log="a.log" full=y
请按任意键继续. . .H:\test\imp>cd e:\oracle\product\10.2.0\db_1\bin && pause && imp smjzk/"123$
\clientFinal.dmp" log="a.log" full=y
请按任意键继续. . .H:\test\imp>cd e:\oracle\product\10.2.0\db_1\bin && pause && imp smjzk/"123$
\clientFinal.dmp" log="a.log" full=y
请按任意键继续. . .**********************超级郁闷啊
这样可以正确调用imp命令,可是用户名密码跟dmp文件还是不正确,还需要手工填。谢谢vc555,帮忙改了脚本,我的cd命令好像很多余啊,哈哈
密码中有特殊字符 %,用 %% 表示。直接这样就可以,不用 cd ...
%ORACLE_HOME%\bin\imp smjzk/"123$%%^" fromuser=smjzk touser=smjzk file="e:\clientFinal.dmp" log="a.log" full=y