从java应用程序运行oracle命令脚本文件

时间:2014-06-03 22:56:29

标签: java oracle

我有一个具有oracle数据库的应用程序,因此安装应用程序需要运行一些oracle命令脚本文件来创建数据库并执行一些DDL操作。这些操作包括一些表空间创建,模式定义等。

我正在尝试使用java应用程序准备安装向导。该向导需要运行这些命令。我的具体问题是:如何从我的java应用程序中运行oracle命令脚本文件?我确实需要一个函数,它将sql命令文件路径作为输入参数并执行脚本文件中的命令,考虑到必须将一些参数(例如一些用户选择的名称)传递给脚本文件。执行

我曾经使用PL / SQL命令行功能以特权用户身份执行sql命令。

以下是该文件的一部分作为示例

ACCEPT TS_NAME CHAR PROMPT 'Enter Table Space Name : ' 
ACCEPT DB_DATAFILE  CHAR PROMPT 'Enter DataBase File full path : '
ACCEPT DB_SIZE  NUMBER PROMPT 'Enter DataBase File Size  (MB) : '
ACCEPT DB_USER CHAR PROMPT 'Enter User Name : '
ACCEPT DB_PASS CHAR PROMPT 'Enter Table Password Name: ' HIDE
ACCEPT DB_TNSNAME CHAR PROMPT 'Enter DATABASE TNSNAME:'
ACCEPT DB_LOG_PATH   CHAR PROMPT 'Enter Log File Path : '

PROMPT Create Tablespace
pause Press Return to continue ...

CREATE TABLESPACE &TS_NAME DATAFILE '&DB_DATAFILE' SIZE &DB_SIZE M 
AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED LOGGING PERMANENT 
EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT MANUAL;


PROMPT Create User
pause Press Return to continue ...

CREATE USER &DB_USER IDENTIFIED BY &DB_PASS DEFAULT TABLESPACE &TS_NAME PROFILE DEFAULT 
QUOTA UNLIMITED ON USERS;
COMMIT;

GRANT CONNECT  TO &DB_USER;
GRANT RESOURCE  TO &DB_USER;

COMMIT;

1 个答案:

答案 0 :(得分:0)

您有一个SQL * Plus脚本。您不能简单地在Java中运行它,它只能由SQL * Plus(或支持脚本使用的任何SQL * Plus命令子集的其他实用程序)运行。

假设您的Java应用程序在客户端计算机上运行(而不是在客户端通过浏览器访问的中间层)并且Oracle客户端安装在客户端计算机上,那么您的Java应用程序可能会生成SQL *加上可执行文件,将脚本传递给它,让SQL * Plus处理提示用户输入参数。当然,这意味着用户会看到一个单独的窗口弹出SQL * Plus运行,需要输入。

或者,您可以用Java重写SQL * Plus脚本。这意味着您的Java应用程序需要提示用户输入表空间名称,例如,使用适合您的应用程序的任何接口。然后,您的应用程序需要根据用户的输入构造CREATE USER之类的SQL语句,并将这些SQL语句发送到数据库。

相关问题