Advertisement

Java调用Shell脚本运行SQL*Loader和存储过程

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
简介:本文介绍如何通过Java程序执行Shell脚本,进而运行SQL*Loader工具及数据库存储过程,实现数据高效导入与处理。 在Java代码中调用执行shell脚本时遇到以下四个错误:1. sqlldr: command not found;2. sqlplus:command not found;3. 0750: You may need to set ORACLE_HOME to your Oracle software directory;4. Message 2100 not found; No message file for product=RDBMS, facility=UL。在Linux环境中,有三个用户可以执行该shell脚本,分别是两个dba用户:oracle、erm 和一个web 用户:erm,在任意目录下均无问题。 检查了所有用户的环境变量发现没有异常(/home/oracle/.profile 与 /home/erm/.profile 环境变量文件为隐藏文件需使用 ls -a 命令查看)。在网上查找解决方案后,有以下几种处理方法: 1. 若oracle_home目录缺失执行权限,则无法进入bin目录。可以尝试更改相关目录的访问权限:chmod 755 $oracle_home;chmod 755 $oracle_home/lib;对$oracle_home/rdbms/mesg目录赋予权限。当需要非Oracle用户使用sqlldr时,除了配置环境变量外还需赋予该用户相应目录的访问权。 2. 使用sh直接执行shell和在Java中调用shell的区别在于需在shell文件内添加oracle用户的环境变量即 . /home/oracle/.bash_profile ,否则会报错:Message 2100 not found; No message file for product=RDBMS... facility=UL。然而,尝试这种方法后仍然出现错误。 最终发现,在Linux环境下直接执行shell脚本时sqlldr命令和sqlplus命令均正常运行;而在Java代码中调用该脚本却报错,由此推断问题可能在于环境变量配置不正确。将oracle的所有环境变量复制到shell脚本段落件内并在Java中进行测试后,所有错误得以解决。 具体实现方式请参见相关文档或代码示例内容。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • JavaShellSQL*Loader
    优质
    简介:本文介绍如何通过Java程序执行Shell脚本,进而运行SQL*Loader工具及数据库存储过程,实现数据高效导入与处理。 在Java代码中调用执行shell脚本时遇到以下四个错误:1. sqlldr: command not found;2. sqlplus:command not found;3. 0750: You may need to set ORACLE_HOME to your Oracle software directory;4. Message 2100 not found; No message file for product=RDBMS, facility=UL。在Linux环境中,有三个用户可以执行该shell脚本,分别是两个dba用户:oracle、erm 和一个web 用户:erm,在任意目录下均无问题。 检查了所有用户的环境变量发现没有异常(/home/oracle/.profile 与 /home/erm/.profile 环境变量文件为隐藏文件需使用 ls -a 命令查看)。在网上查找解决方案后,有以下几种处理方法: 1. 若oracle_home目录缺失执行权限,则无法进入bin目录。可以尝试更改相关目录的访问权限:chmod 755 $oracle_home;chmod 755 $oracle_home/lib;对$oracle_home/rdbms/mesg目录赋予权限。当需要非Oracle用户使用sqlldr时,除了配置环境变量外还需赋予该用户相应目录的访问权。 2. 使用sh直接执行shell和在Java中调用shell的区别在于需在shell文件内添加oracle用户的环境变量即 . /home/oracle/.bash_profile ,否则会报错:Message 2100 not found; No message file for product=RDBMS... facility=UL。然而,尝试这种方法后仍然出现错误。 最终发现,在Linux环境下直接执行shell脚本时sqlldr命令和sqlplus命令均正常运行;而在Java代码中调用该脚本却报错,由此推断问题可能在于环境变量配置不正确。将oracle的所有环境变量复制到shell脚本段落件内并在Java中进行测试后,所有错误得以解决。 具体实现方式请参见相关文档或代码示例内容。
  • Shell于编译Oracle
    优质
    这段简介可以描述为:利用Shell脚本自动化编译Oracle存储过程的过程,提高开发效率和代码一致性。通过这种方式,开发者能够更加专注于业务逻辑实现,减少重复性劳动。 具体字数为50字。 在Linux系统中使用Shell脚本编译Oracle存储过程的方法是可行的。这种方法可以提高自动化程度并简化开发流程中的某些任务。编写相应的shell脚本需要对SQL*Plus或sqlplus工具有一定的了解,因为通常会通过这些命令行工具来执行PL/SQL代码和数据库操作。 为了实现这一目标,你可以创建一个包含编译存储过程所需所有步骤的Shell脚本段落件,并在其中加入适当的参数以连接到正确的Oracle实例。例如,可以使用如下方式调用sqlplus: ``` #!/bin/bash export ORACLE_HOME=/path/to/oracle/home export SQLPATH=$ORACLE_HOME/sqlplus/admin # 连接到数据库并执行存储过程的编译脚本 $ORACLE_HOME/bin/sqlplus -s user/password@database <
  • ShellBatJava
    优质
    本文介绍了如何通过Windows批处理(.bat)文件和Unix/Linux Shell脚本执行Java应用程序的方法与技巧。 如何使用Shell和Bat脚本运行Java程序?
  • 在PB中Oracle
    优质
    本文介绍了如何在PowerBuilder环境中执行Oracle数据库中的存储过程脚本的方法和步骤,帮助开发者提高开发效率。 在PowerBuilder(PB)中执行Oracle存储过程脚本,并使用批处理来创建和更新这些脚本的程序将在此环境中实现。
  • OraclePL/SQL
    优质
    本教程详细介绍如何在Oracle数据库中使用PL/SQL进行存储过程的调试,涵盖设置断点、单步执行和检查变量值等技巧。 Oracle使用PL/SQL调试存储过程及创建存储过程结构。
  • JavaSQL Server详解
    优质
    本文详细讲解了如何使用Java编程语言调用位于SQL Server数据库中的存储过程的方法和步骤。 本段落详细介绍了在Java中调用SQL Server存储过程的方法,特别适用于企业级应用开发场景,因为使用存储过程能够封装复杂的数据库逻辑、提高性能并减少网络流量。 1. 使用不带参数的存储过程:对于这种类型的存储过程,在Java代码中可以通过创建`Statement`对象,并利用执行带有特定语法格式(即{call procedure-name})SQL语句的方法来调用。例如,假设在AdventureWorks示例数据库中有名为GetContactFormalNames的存储过程,该过程返回Person.Contact表中的前十个联系人的正式名字信息。在这种情况下,我们创建一个`Statement`实例,并执行相应的SQL命令以调用此存储过程并从结果集中获取数据。 2. 使用带有输入参数的存储过程:当某个存储过程需要接收用户提供的输入时,则可以利用Java中的`PreparedStatement`对象和其对应的`prepareCall()`方法。这种方法允许通过设置各占位符(?)的具体值来传递所需的参数,例如,在uspGetEmployeeManagers这个例子中,该存储过程接受一个名为“EmployeeID”的整数作为输入,并返回与之相关的员工及其经理的信息。我们首先创建一个`PreparedStatement`实例并使用如`setInt()`这样的方法设置相应参数的值。 3. 使用带有输出参数的存储过程:当需要从数据库获取特定信息时,可以利用Java中的CallableStatement对象和其上的registerOutParameter()方法预先声明所需的输出参数类型。执行完存储过程后,可以通过调用getXXX()(具体取决于数据类型的getString(), getInt()等)来读取返回值。 4. 使用带有返回状态的存储过程:一些情况下,可能会从数据库中获取一个表示操作成功或失败的状态码。在Java代码中,可以利用CallableStatement对象上的getInt()方法来检索此状态码信息。 5. 使用包含更新计数的存储过程:当执行INSERT、UPDATE或者DELETE等数据修改命令时,这些操作可能会影响到数据库中的行数变化。在这种场景下,可以通过调用`executeUpdate()` 方法获取受影响的行数,并将其用于处理存储过程中返回的结果或错误情况。 在实际应用中,为了保证程序稳定性与安全性,在编写代码的同时还需要考虑如何正确地捕获和处理可能出现的各种异常(如SQLException)。此外,关闭所有不再使用的数据库资源(ResultSet、Statement及Connection等)也是至关重要的步骤之一。通过这种方式可以有效地避免由于未释放的资源而导致的问题。 Java提供了多种方式利用JDBC驱动程序来调用SQL Server存储过程,无论是简单的无参数版本还是复杂的包含输入输出参数的情况都适用。掌握这些技术能够帮助开发者更高效地与数据库进行交互,并实现更为复杂的应用逻辑需求。
  • SQL中创建
    优质
    本文章介绍了在SQL数据库中如何创建及使用存储过程的基本方法与技巧,帮助开发者提高代码复用性和执行效率。 如何创建存储过程 在名为testdatabase的数据库中创建一个名为testname的存储过程: ```sql go create procedure testname @test1 int, @test2 nvarchar(50) as insert into testtable values(@test1,@test2) return // 以下部分为查询语句示例: //select * from users where truename like %[王刘]% //只能分词查询, 查询姓刘和姓王的信息 ``` 如何使用 ```csharp public string[] TestLogin(string uname, string upwd) { } ```
  • Shell命令PHP
    优质
    本文将介绍如何在Linux系统中利用Shell命令行环境执行PHP脚本文件,帮助开发者高效地进行代码测试与部署。 在Linux系统下安装好的PHP运行环境,可以使用Shell调用PHP脚本,并且附带相关工具。
  • SQL Server中的WebService
    优质
    简介:本文探讨了在SQL Server环境中通过存储过程实现Web Service调用的方法与技巧,旨在帮助数据库开发者更好地集成外部服务。 在SQL Server数据库中可以直接调用Web Service,无需通过前端进行调用。
  • PL/SQL批量多个SQL文件及
    优质
    本教程介绍如何在PL/SQL环境中通过脚本批量执行多个SQL文件和存储过程,提高数据库操作效率。 需要关于PL/SQL批量执行多个SQL文件和存储过程的资料可以联系我。