北在北方

太白枝头看,花开不计年,杯中浮日月,楼外是青天。

导航

SQL Loader的简单使用

Posted on 2012-05-14 21:40  CN.programmer.Luxh  阅读(301)  评论(1编辑  收藏  举报

  项目中需要导入几十MB、上百MB的TXT文本文件,利用oracle的sql loader导入非常不错。

 

String cmd = "sqlldr userid=数据库用户名/密码@数据库监听实例名 skip=1 errors=0 control=d:/test.ctl data=d:/test.txt log=d:/log/log.log bad=d:/log/bad.bad ";

//返回与当前 Java 应用程序相关的运行时对象 
Runtime run = Runtime.getRuntime(); 
// 启动另一个进程来执行命令
Process p = run.exec(cmd);      
if (p.waitFor() != 0) {       
     if (p.exitValue() == 0) {
        //p.exitValue()==0表示正常结束,1:非正常结束   
        System.out.println(“执行成功”);
     }else { 
        System.out.println(“执行出错”);
     }
} 

 

test.ctl文件:

 

LOAD    DATA          
        TRUNCATE   
        INTO   TABLE   表名
        FIELDS   TERMINATED   BY '|'   
TRAILING NULLCOLS
(
name,
password,
createTime date 'YYYY-MM-DD HH24:MI:SS'
)

test.txt

 

姓名|密码|导入时间
李坏|123456|2012-12-24 22:10:23
叶开|123456|2012-12-24 22:10:23

 

   cmd命令中的skip=1表示跳过导入文件中的第一行,log=d:/log/log.log导入成功的日志文件, bad=d:/log/bad.bad导入失败的日志文件。

   test.ctl文件中的TRUNCATE  INTO标识全量更新,就是会把表的数据全部删掉,再导入。 (APPEND INTO则是增量,不会删表中的数据)。