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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 簡單的整合 shiro + SpringMVC 例子SpringMVC
- 一個簡單的「IOC」例子
- 擼一個簡單的MVVM例子MVVM
- Matplotlib1.簡單例子單例
- 一個最簡單的 Github workflow 例子Github
- 一個簡單的netty通訊的例子Netty
- WebRTC:一個視訊聊天的簡單例子Web單例
- 一個簡單的生活例子,感受TRIZ的魅力!
- JUnit概述及一個簡單例子單例
- 一個簡單的例子瞭解async跟defer
- 一個簡單的例子教會您使用javapJava
- Spring Boot 中使用Caffeine快取的簡單例子Spring Boot快取單例
- Rust 程式設計中使用 leveldb 的簡單例子Rust程式設計單例
- npm包serve的簡單使用NPM
- spring mvc(註解)上傳檔案的簡單例子SpringMVC單例
- spring 簡單的使用 Hikari連線池 和 jdbc連線mysql 的一個簡單例子SpringJDBCMySql單例
- Python簡單實現多執行緒例子Python執行緒
- 關於GJSON包的簡單使用JSON
- Unity如何連線伺服器: 一個簡單的例子Unity伺服器
- 簡單例子展示爬蟲在不同思想下的寫法單例爬蟲
- 轉一篇OpenSSL的例子:簡單的TLS伺服器TLS伺服器
- Laravel 關聯查詢 ——一對一 簡單例子Laravel單例
- 多執行緒賣火車票簡單例子執行緒單例
- 一個簡單的例子理解Kubernetes的三種IP地址型別型別
- 通過一個簡單的例子,瞭解 Cypress 的執行原理
- python+flask 編寫一個簡單的登入介面例子PythonFlask
- python+flask編寫一個簡單的登入介面例子PythonFlask
- 用簡單易懂的例子解釋隱馬爾可夫模型隱馬爾可夫模型
- SAP MM採購定價過程的一個簡單例子單例
- SpringCloud配置重新整理機制的簡單分析[nacos為例子]SpringGCCloud
- Debian安裝包的簡單製作
- npm包:js-cookie的簡單使用NPMJSCookie
- Wireshark的簡單抓包QQ的過程
- Laravel 5 關聯查詢 —— N 對 N 簡單例子Laravel單例
- Laravel 5 關聯查詢 ——一對 N 簡單例子Laravel單例
- Spring框架系列(2) - Spring簡單例子引入Spring要點Spring框架單例
- 用最簡單的例子講解js中解決非同步的方法JS非同步
- js閉包簡單總結JS
- 簡單介紹JavaScript閉包JavaScript