在Oracle中大数据量的导入和导出

  • 来源: 互联网 作者: rocket   2008-03-19/11:23
  • 在oracle中批量数据的导出是借助sqlplus的spool来实现的。批量数据的导入是通过sqlload来实现的。

    大量数据的导出部分如下:
    /***************************
    *sql脚本部分 demo.sql begin
    **************************/
    /**************************
    * @author meconsea
    * @date 20050413
    * @msn meconsea@hotmail.com
    * @Email meconsea@163.com
    **************************/

    //##--markup html:html格式输出,缺省为off

    //##--autocommit:自动提交insert、update、delete带来的记录改变,缺省为off

    //##--define:识别命令中的变量前缀符,缺省为on,也就是'&',碰到变量前缀符,后面的字符串作为变量处理.

    set colsep' '; //##--域输出分隔符

    set echo off;//##--显示start启动的脚本中的每个sql命令,缺省为on

    set feedback off;//##--回显本次sql命令处理的记录条数,缺省为on

    set heading off; //##--输出域标题,缺省为on


    set pagesize 0;//##--输出每页行数,缺省为24,为了避免分页,可设定为0。

    set linesize 80; //##--输出一行字符个数,缺省为80

    set numwidth 12; //##--输出number类型域长度,缺省为10

    set termout off; //##--显示脚本中的命令的执行结果,缺省为on

    set timing off;//##--显示每条sql命令的耗时,缺省为off

    set trimout on;//##--去除标准输出每行的拖尾空格,缺省为off

    set trimspool on;//##--去除重定向(spool)输出每行的拖尾空格,缺省为off

    spool C:\data\dmczry.txt;

    select trim(czry_dm),trim(swjg_dm),trim(czry_mc) from dm_czry;

    spool off;

    EOF

    /***********************
    * demo.sql end
    ***********************/

    在数据导入的时候采用sqlload来调用,在该部分调用的时候用java来调用sqlload。 
    sqlload包括ctl控制文件。例如:
    /*********************
    * meconseactl
    ********************/
    load data
    infile 'C:\data\dmczry.txt'
    replace into table DM_CZRY
    fields terminated by X'09'
    (CZRY_DM,SWJG_DM,CZRY_MC)

    /********************
    * end
    * 注释:里面的replace可以改为append
    *******************/

    java程序如下:
    在java程序用可以根据需求写成一个bat文件。 把数据库的配置和文件的路径写到一个properties
    文件。
    /*************************
    * ide properties
    ************************/
    Dserver=test/test@SJJZ
    sqlldr=D:\\oracle\\ora92\\bin\\SQLLDR.EXE

    ctldmczry=C:\\data\\ctl\\dmczry.ctl
    txtdmczry=C:\\data\\dmczry.txt

    写个PropertyBean.java来操作properties文件。(偷懒不写了!)
    用DmCzry.java来把记录导入db中。部分代码如下:

    /****************************
    * 代码摘要
    *
             ****************************

    ..............
    sqlldr = pb.getSqlldr();
    txt = pb.getTxtdmczry();
    ctl = pb.getCtldmczry();
    Dserver= pb.getDserver();

    Process processCmd = Runtime.getRuntime().exec(sqlldr+" "+cmdStr); 


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多