今天做了一個用java導入sql腳本的功能,前臺上傳一個sql文件,後臺先保存本地,然後進行導入。主要代碼如下:
String cmd = "cmd /c sqlplus usr/pwd@{//服務器IP:1521/}sid @d:\\1.sql>d:\\t.log"; Process p = null; try { p = Runtime.getRuntime().exec(cmd); } catch (IOException e) { e.printStackTrace(); } finally { if (p != null) { try { p.waitFor(); } catch (InterruptedException e) { e.printStackTrace(); } p.destroy(); } }
注:1.sql文件中必須要有/
2.如果沒有在sql最後一行加入exit則,執行完後,process實例仍然出於等待中,具體可以自行嘗試cmd中執行。如需sql執行完程序關閉則最後一行加入exit。
3.上面的服務器IP和端口號是可選的,如果你已經配置了Net manager,則直接引用配置的sid就行了。