oracle大數據量的導入和導出
2024-08-29 13:44:13
供稿:網友
在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@SJJZsqlldr=D://oracle//ora92//bin/ QLLDR.EXE
ctldmczry=C://data//ctl//dmczry.ctltxtdmczry=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); .............