oracle匯出自定義格式 ,等格式資料

2021-06-04 21:10:41 字數 1996 閱讀 2594

關於spool(spool是sqlplus的命令,不是sql語法裡面的東西。)

對於spool資料的sql,最好要自己定義格式,以方便程式直接匯入,sql語句如:

select taskindex||'|'||commonindex||'|'||tasktype||'|'||to_number(to_char(sysdate,'yyyymmdd')) from ssrv_sendsms_task;

spool常用的設定

set colsep' ';    //域輸出分隔符

set echo off;    //顯示start啟動的指令碼中的每個sql命令,預設為on

set feedback off;  //回顯本次sql命令處理的記錄條數,預設為on

set heading off;   //輸出域標題,預設為on

set pagesize 0;   //輸出每頁行數,預設為24,為了避免分頁,可設定為0。

set termout off;   //顯示指令碼中的命令的執行結果,預設為on

set trimout on;   //去除標準輸出每行的拖尾空格,預設為off

set trimspool on;  //去除重定向(spool)輸出每行的拖尾空格,預設為off

匯出文字資料的建議格式:

sql*plus環境設定set newpage none

set heading off

set space 0

set pagesize 0

set trimout on

set trimspool on

set linesize 2500

注:linesize要稍微設定大些,免得資料被截斷,它應和相應的trimspool結合使用防止匯出的文字有太多的尾部空格。但是如果 linesize設定太大,會大大降低匯出的速度,另外在windows下匯出最好不要用plsql匯出,速度比較慢,直接用commend下的 sqlplus命令最小化視窗執行。

方法一:採用以下格式指令碼 

set colsep '|'               --設定|為列分隔符

set trimspool on

set linesize 120

set pagesize 2000         

set newpage 1  --設定頁與頁之間的分隔

set heading off           

set term off

set num 18                 

set feedback off           

spool 路徑+檔名

select * from tablename;

spool off

方法二:採用以下指令碼

set trimspool on

set linesize 120

set pagesize 2000

set newpage 1

set heading off

set term off

spool 路徑+檔名

select col1||','||col2||','||col3||','||col4||'..' from tablename;

spool off

比較以上方法,即方法一採用設定分隔符然後由sqlplus自己使用設定的分隔符對欄位進行分割,方法二將分隔符拼接在select語句中,即手工控制輸出格式。

在實踐中,發現通過方法一匯出來的資料具有很大的不確定性,這種方法匯出來的資料再由sqlldr匯入的時候出錯的可能性在95%以上,尤其對大批量的資料表,如100萬條記錄的表更是如此,而且匯出的資料檔案狂大。

而方法二匯出的資料檔案格式很規整,資料檔案的大小可能是方法一的1/4左右。經這種方法匯出來的資料檔案再由sqlldr匯入時,出錯的可能性很小,基本都可以匯入成功。

因此,實踐中我建議大家使用方法二手工去控制spool檔案的格式,這樣可以減小出錯的可能性,避免走很多彎路。

輸出自定義日期格式

通過實現iformatprovider,icustomformatter介面可以實現自定義的格式輸現,這裡有實現乙個例子,以輸出日期格式為例 顯示今天 明天 後天和 x月x日 等 1 假設我們有多種顯示日期格式的需求,我們可以定義乙個列舉如下 public enum datetimeformat 2...

java 匯出自定義樣式excel

由於專案需要 要求匯出乙個這樣的 然而 正常匯出的 都是這樣嬸兒地 這種格式網上demo有很多就不詳細說了 主要說說上面三行是怎麼畫的。第一行大標題,是9行合併成的一行,而且字型大小需要單獨設定 hssfsheet sheet hssfcell cell response.setheader con...

彈出自定義視窗

1.window物件的open方法 window的open方法用於建立乙個新視窗,語法如下 window.open url,windowname windowfeatures replaceflag url 彈出視窗的url位址 windowname 彈出視窗的名稱,可為空 windowfeatur...