在Oracle中大數據量的導入和導出
2024-08-29 13:38:16
供稿:網友
在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控制文件。例如:
/*********************
* meconsea ctl
********************/
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);