你的位置:首页 > 软件开发 > Java > Java中使用Oracle的客户端 load data和sqlldr命令执行数据导入到数据库中

Java中使用Oracle的客户端 load data和sqlldr命令执行数据导入到数据库中

发布时间:2015-07-17 15:00:10
Windows环境下测试代码:import java.io.File;import java.io.FileNotFoundException;import java.io.FileWriter;import java.io.IOException;import java.io. ...

Windows环境下测试代码:

Java中使用Oracle的客户端 load data和sqlldr命令执行数据导入到数据库中Java中使用Oracle的客户端 load data和sqlldr命令执行数据导入到数据库中
import java.io.File;import java.io.FileNotFoundException;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.util.Scanner;public class testTimer {  /**   * @param args   */  public static void main(String[] args) {    // TODO Auto-generated method stub    // ./szrpp_files/clPath    //写控制文件.ctl    String fileRoute = "D:\\files\\";//文件地址路径    String fileName = "db.txt";//数据文件名    String tableName = "testtable";//表名    String fieldName = "(Source,File,Date,FileNum,RechargeSerial,Status)";//要写入表的字段    String ctlfileName = "ctlName.ctl";//控制文件名        stlFileWriter(fileRoute,fileName,tableName,fieldName,ctlfileName);    //要执行的DOS命令    String user = "SCOTT";    String psw = "123456";    String Database = "ORCL";    String logfileName = "logName.log";    Executive(user,psw,Database,fileRoute,ctlfileName,logfileName);      }    /**   * * 写控制文件.ctl   * @param fileRoute 数据文件地址路径   * @param fileName 数据文件名   * @param tableName 表名   * @param fieldName 要写入表的字段   * @param ctlfileName 控制文件名   */  public static void stlFileWriter(String fileRoute,String fileName,String tableName,String fieldName,String ctlfileName)  {    FileWriter fw = null;    String strctl = "OPTIONS (skip=0)" +    " LOAD DATA INFILE '"+fileRoute+""+fileName+"'" +    " APPEND INTO TABLE "+tableName+"" +    " FIELDS TERMINATED BY ','" +    " OPTIONALLY ENCLOSED BY \"'\"" +    " TRAILING NULLCOLS "+fieldName+"";     try {      fw = new FileWriter(fileRoute+""+ctlfileName);      fw.write(strctl);     }     catch (IOException e)     {        e.printStackTrace();    }    finally {      try       {        fw.flush();        fw.close();      }       catch (IOException e)      {        e.printStackTrace();      }          }  }    /**   * 调用系统DOS命令   * @param user   * @param psw   * @param Database   * @param fileRoute 文件路径   * @param ctlfileName 控制文件名   * @param logfileName 日志文件名   */  public static void Executive(String user,String psw,String Database,String fileRoute,String ctlfileName,String logfileName)  {    InputStream ins = null;    //要执行的DOS命令    String dos="sqlldr "+user+"/"+psw+"@"+Database+" control="+fileRoute+""+ctlfileName+" log="+fileRoute+""+logfileName;        String[] cmd = new String[]    { "cmd.exe", "/C", dos }; // 命令    try    {      Process process = Runtime.getRuntime().exec(cmd);      ins = process.getInputStream(); // 获取执行cmd命令后的信息//      BufferedReader reader = new BufferedReader(new InputStreamReader(ins));//      String line = null;//      while ((line = reader.readLine()) != null)//      {//        String msg = new String(line.getBytes("ISO-8859-1"), "UTF-8");//        System.out.println(msg); // 输出//      }      int exitValue = process.waitFor();      if(exitValue==0)      {        System.out.println("返回值:" + exitValue+"\n数据导入成功");              }else      {        System.out.println("返回值:" + exitValue+"\n数据导入失败");              }            process.getOutputStream().close(); // 关闭    }    catch (Exception e)    {      e.printStackTrace();    }  }}

原标题:Java中使用Oracle的客户端 load data和sqlldr命令执行数据导入到数据库中

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。