问题描述:
在oracle数据库的服务器上有一个文件夹utl_file里边存放了一些数据文件其中文件内容格式是:id,desc,type.即如:(11221,商品1,VIP)。现在我想通过java程序(java程序不在oracle机器上)调用过程test_proc(我自己写的一个过程),用该过程(test_proc)来完成数据的导入功能。我想在test_proc过程中调用oracle的sqlldr命令,不知道在过程中应该怎么调用sqlldr命令?我想再说明一下:我想实现的数据的导入功能,一定是要通过程序来实现,排除手动运行sqlloder进行数据导入的情况。希望大家帮助!
在oracle数据库的服务器上有一个文件夹utl_file里边存放了一些数据文件其中文件内容格式是:id,desc,type.即如:(11221,商品1,VIP)。现在我想通过java程序(java程序不在oracle机器上)调用过程test_proc(我自己写的一个过程),用该过程(test_proc)来完成数据的导入功能。我想在test_proc过程中调用oracle的sqlldr命令,不知道在过程中应该怎么调用sqlldr命令?我想再说明一下:我想实现的数据的导入功能,一定是要通过程序来实现,排除手动运行sqlloder进行数据导入的情况。希望大家帮助!
写一个sqlldr脚本,windows上bat,unix上shell,在脚本中调用sqlldr,java直接调脚本。解决方案2:
在存储过程中使用外部表
写一个sqlldr脚本,windows上bat,unix上shell,在脚本中调用sqlldr,java直接调脚本。能够给个小例吗?
shell脚本写,脚本里和综合执行sql以及plsql procedure还有sqllrd的命令
2.shell文件:
#!/bin/sh
sqlldr schemaname/password@servername control=controlname.ctl log=sqlldrlog.log
retcode=`echo $?`
case "$retcode" in
0) echo "SQL*Loader execution successful" ;;
1) echo "SQL*Loader execution exited with EX_FAIL, see logfile" ;;
2) echo "SQL*Loader exectuion exited with EX_WARN, see logfile" ;;
3) echo "SQL*Loader execution encountered a fatal error" ;;
*) echo "unknown return code";;
esac
String cmdstr = "/path/shellname.sh";
Runtime.getRuntime().exec(cmdstr);
Runtime.getRuntime().exec(cmdstr);
请说说你这个方法的优点。
我想要的是把sqlldr的控制文件放在,oracle数据库服务器上,而运行java代码的服务器是另外一个。
5楼的这个方法应该是java代码的运行服务器和sqlldr存放的服务器是同一台机器吧?