使用UTL_FILE在oracle中读写文本数据
--以SYS用戶創建目錄dir_dump,文件就保存在這個目錄下
SQL> create directory dir_dump as '/data/cmssdb';
Directory created.
--授權對應的操作帳號讀和寫的權限,這里是operator
SQL> grant read on directory dir_dump to operator;
Grant succeeded.
SQL> grant write on directory dir_dump to operator;
Grant succeeded.
--以operator用戶登陸
SQL> connect operator/operation
Error accessing PRODUCT_USER_PROFILE
Warning:? Product user profile information not loaded!
You may need to run PUPBLD.SQL as SYSTEM
Connected.
--創建表BIBI,并加入測試數據
SQL> create table bibi(row_id int,row_name varchar2(10));
Table created.
SQL> insert into bibi values(1,'luochun');
1 row created.
SQL> insert into bibi values(2,'maihy');
1 row created.
SQL> commit;
Commit complete.
/*--該過程負責備份數據到DIR_DUMP目錄,名稱為bibi.csv
DECLARE lv_file_handle UTL_FILE.file_type;
BEGIN
lv_file_handle := UTL_FILE.FOPEN('DIR_DUMP','bibi.csv','a');
FOR x IN (SELECT ROW_ID,ROW_NAME FROM BIBI) LOOP
? UTL_FILE.PUT_LINE(lv_file_handle,x.ROW_ID || ',' || NVL(x.ROW_NAME,''));
END LOOP;
UTL_FILE.FCLOSE(lv_file_handle);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM,1,200));
END;
/
*/
--過程完成,轉到DIR_DUMP目錄查看生成的文件,數據已經產生
[oracle@qaserver oracle]$ cd /data/cmssdb
[oracle@qaserver cmssdb]$ cat bibi.csv
1,luochun
2,maihy
/*
--現在刪除BIBI數據,準備將備份的導入
SQL> truncate table bibi;
Table truncated.
/*--這個過程負責讀取文件,并導入數據
DECLARE lv_file_handle UTL_FILE.file_type;
lv_row_text VARCHAR2(2000);
lv_row_id PLS_INTEGER;
lv_row_name VARCHAR2(50);
BEGIN
lv_file_handle := UTL_FILE.FOPEN('DIR_DUMP','bibi.csv','r');
LOOP
? BEGIN
?? UTL_FILE.GET_LINE(lv_file_handle,lv_row_text);
?? lv_row_id := SUBSTR(lv_row_text,1,INSTR(lv_row_text,',',1,1) - 1);
?? lv_row_name := SUBSTR(lv_row_text,INSTR(lv_row_text,',',1,1) + 1);
?? INSERT INTO BIBI VALUES(lv_row_id,lv_row_name);
? EXCEPTION
?? WHEN NO_DATA_FOUND THEN
??? EXIT;
? END;
END LOOP;
COMMIT;
UTL_FILE.FCLOSE(lv_file_handle);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM,1,200));
END;
/
*/
--數據已經產生
SQL> SQL> SELECT * FROM BIBI;
??? ROW_ID ROW_NAME
---------- --------------------
???????? 1 luochun
???????? 2 maihy
SQL>
轉載于:https://www.cnblogs.com/fenny8/archive/2009/03/16/1412832.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的使用UTL_FILE在oracle中读写文本数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Dynamips和Vmware完成CCV
- 下一篇: CSS3新特性(整理贴)