UTL_FILE包的簡單例子
看了yangtingkun的這個帖子,我做了一下改進,加入了域分隔符和行結尾符
GRANT READ[,WRITE] ON DIRECTORY directory TO username;
)
SQL> CREATE DIRECTORY D_OUTPUT AS 'E:';
目錄已建立。
CREATE OR REPLACE PROCEDURE P_WRITE_FILE
(
P_TABLE_NAME IN VARCHAR2,
P_COLUMN_LIST IN VARCHAR2 DEFAULT NULL,
P_WHERE_STR IN VARCHAR2 DEFAULT NULL,
P_SEP IN VARCHAR2, --域分隔符
P_END IN VARCHAR2 --行結尾符
) AS
V_FILE UTL_FILE.FILE_TYPE;
V_BUFFER VARCHAR2(32767);
V_RESULT VARCHAR2(32767);
C_RESULT SYS_REFCURSOR;
--c_a char(1);
BEGIN
V_FILE := UTL_FILE.FOPEN('D_OUTPUT', P_TABLE_NAME || TO_CHAR(SYSDATE, 'YYYY_MM_DD') || '.csv','w', 32767);
IF P_COLUMN_LIST IS NULL THEN
FOR C_COLUMN IN (SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = upper(P_TABLE_NAME)) LOOP
V_BUFFER := V_BUFFER || C_COLUMN.COLUMN_NAME || ',';
END LOOP;
V_BUFFER := RTRIM(V_BUFFER, ',');
ELSE
V_BUFFER := P_COLUMN_LIST;
END IF;
UTL_FILE.PUT_LINE(V_FILE, V_BUFFER);
--V_BUFFER := REPLACE(V_BUFFER, ',', '|| ''","'' ||');
V_BUFFER := REPLACE(V_BUFFER, ',', '|| '','' ||');
V_BUFFER := REPLACE(V_BUFFER, ',', P_SEP);
--V_BUFFER := V_BUFFER ||'||'||''''||P_END||''''||' ';
if P_END is not null then
V_BUFFER := V_BUFFER||'||'''||P_SEP ||P_END||'''';
end if;
--dbms_output.enable(1000000);
dbms_output.put_line(substr(V_BUFFER,1,255));
dbms_output.put_line(substr(V_BUFFER,length(V_BUFFER)-255,255));
--V_BUFFER := 'SELECT ''"'' ||' || V_BUFFER || '||''"'' RESULT FROM ' || P_TABLE_NAME;
V_BUFFER := 'SELECT '||V_BUFFER||' RESULT FROM ' || P_TABLE_NAME;
IF P_WHERE_STR IS NOT NULL THEN
IF SUBSTR(LTRIM(P_WHERE_STR), 1, 5) != 'WHERE' THEN
V_BUFFER := V_BUFFER || ' WHERE';
END IF;
V_BUFFER := V_BUFFER || ' ' || P_WHERE_STR;
END IF;
OPEN C_RESULT FOR V_BUFFER;
LOOP
FETCH C_RESULT INTO V_RESULT;
EXIT WHEN C_RESULT%NOTFOUND;
UTL_FILE.PUT_LINE(V_FILE, V_RESULT);
END LOOP;
UTL_FILE.FCLOSE(V_FILE);
END;
用這個就可以用sqlldr倒入資料或者可以倒入到別的資料庫了!!
ref: http://yangtingkun.itpub.net/post/468/204487來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7916042/viewspace-889352/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [轉自楊廷錕]UTL_FILE包的簡單例子單例
- 一個閉包函式的簡單例子函式單例
- XPATH的簡單例子單例
- utl_file包的應用
- Websocket簡單例子Web單例
- JNI 簡單例子單例
- HttpClient 簡單例子HTTPclient單例
- TensorFlow 的簡單例子單例
- Spark Stream 簡單例子Spark單例
- 擼一個簡單的MVVM例子MVVM
- Spark SQL 最簡單例子SparkSQL單例
- Oracle - UTL_FILE包之詳解Oracle
- 【UTL_FILE】使用UTL_FILE包生成檔案並寫入資料
- 簡單的整合 shiro + SpringMVC 例子SpringMVC
- 一個最簡單的 Github workflow 例子Github
- 一個簡單的觀察者模式例子模式
- smack和openfire通訊的簡單例子Mac單例
- struts2.01用法的簡單例子單例
- 一個簡單的Ajax請求例子
- Matplotlib1.簡單例子單例
- web到service簡單原理例子Web
- LRU演算法簡單例子演算法單例
- 尋struts連oracle簡單例子Oracle單例
- WebRTC:一個視訊聊天的簡單例子Web單例
- 一個簡單的例子教會您使用javapJava
- 一個簡單的spring-boot例子Springboot
- 一個簡單的例子帶你理解HashmapHashMap
- EBS提交併發請求的簡單例子單例
- Spring定時任務的簡單例子Spring單例
- 關於XML序列化的簡單例子XML單例
- Oracle 11g UTL_FILE 包的使用方法Oracle
- JUnit概述及一個簡單例子單例
- Oracle內建包UTL_FILE使用說明Oracle
- Rust 程式設計中使用 leveldb 的簡單例子Rust程式設計單例
- spring攔截器的一個簡單例子Spring單例
- Java多型的一個簡單入門的例子Java多型
- 多執行緒 -- 初學簡單例子執行緒單例
- Apache CXF 與 Spring 整合簡單例子ApacheSpring單例