1、登陸sys或者sysdate建立檔案路徑並授權給使用者user_01
create directory filepath as 'd:\test' --建立乙個路徑filepath
grant read,write on directory filepath to user_01; --給使用者user_01授予路徑讀寫的許可權
2、在指定路徑下建立資料夾(如:d:\test),並在該資料夾下面建立需要寫入資料的檔案(如:122.txt)
3、登陸被授予讀寫許可權的使用者,進行讀寫操作
declare
l_file utl_file.file_type; --定義乙個檔案變數l_file,型別是file_type
begin
l_file := utl_file.fopen('filepath', '122.txt', 'w'); --給檔案變數賦予乙個初值122.txt,最後乙個引數w表示寫入
for i in
(select a.id||' '||a.name||' '||a.time result from table1 a);
loop
utl_file.put_line(l_file,i.result);
end loop;
utl_file.fclose(l_file);--關閉檔案
end;
4、在檔案122.txt中可檢視寫入的結果
5、知識點:utl_file包
(1)utl_file:是oracle提供的乙個用來讀寫檔案的標準工具包
(2)路徑:使用包utl_file讀寫作業系統的檔案,首先需要建立路徑(directory)並給使用者授讀寫許可權,oracle目錄(路徑)的作用就是讓資料庫與作業系統進行檔案的互動;
建立目錄(路徑)的使用者必須具有dba角色或者被賦予create any directory許可權,如果普通使用者被賦予create any directory許可權,那該使用者就自動具備路徑的讀寫許可權;
建立路徑:create directory filepath as 'd:\test';
路徑讀寫授權:grant read,write on directory filepath to user_01;
utl_file包執行授權:grant execute on utl_file to user_01;
(3)file_type:utl_file包中定義的記錄型別,其成員是私有的,不能直接呼叫
(4)fopen:用於開啟檔案的函式,最多可以開啟50個檔案
語法:utl_file.fopen( location in varchar2, --檔案路徑,必須使用directory物件,且名稱必須為大寫
filename in varchar2,--檔名稱
mode in varchar2,--開啟模式
max_linesize in varchar2 --指定檔案每行存放的最大字元數
);return file_type;--返回預操作檔案的指標(控制代碼)
注:開啟模式有'w'、'r'、'a'、'wb'、'rb'、'ab'共6種
'w':寫檔案(文字),該檔案不存在的話會自動建立,存在的話會覆蓋原檔案
'r':讀檔案(文字),該檔案必須存在,否則會報錯
'a':追加檔案(文字),該檔案若不存在,會以write模式建立此檔案
帶'b'字尾的為使用byte(位元組)模式,bolb和varchar2不一樣,當檔案為bolb物件時,開啟模式必須選擇帶'b'字尾的模式
(5) is_open:用於判斷檔案是否已開啟的函式
utl_file.is_open(
file in file_type --指定檔案的控制代碼
);return boolean;--如果已經開啟返回ture,否則返回fulse
(6)fclose:用於關閉已開啟檔案的函式
utl_file.fclose(file in\out file_type);
fclose_all:用於關閉當前所有開啟檔案的函式
utl_file.fclose_all;
(7)put_line:用於將文字緩衝區內容寫入到檔案中的函式,當使用該函式為文字追加內容時,會自動在文字的尾部追加行終止符
utl_file.put_line(
file in file_type,--檔案指標(控制代碼)
buffer in varchar2,--指定存放資料的緩衝區
autoflush in boolean default false--指定是否自動重新整理緩衝區資料
)
(8)get_line:用於讀取已開啟檔案的行資料,行資料會被讀取到輸出緩衝區
utl_file.get_line(
file in
file_type,
-- 檔案控制代碼
buffer out
varchar2,
-- 儲存讀取的buff
linesize in
number,
-- 讀取的最大位元組數
len in
pls_integer
default
null
-- 實際讀取長度
);(9)get_raw:用於從檔案中讀取raw字串,並調節檔案指標到讀取位置
utl_file.get_raw(
fid in
utl_file.type,
-- 檔案控制代碼
r out
nocopy raw,
-- 讀取的快取buff
len in
pls_integer
default
null
-- 讀取長度
);(10)put:將緩衝區中內容寫入檔案的函式,使用該函式時,檔案必須以寫模式開啟
utl_file.put(
file in
file_type,
buffer in
varchar2
); (11)put_raw:將raw緩衝區中的內容寫入檔案的函式
utl_file.put_raw(
file in file_type,
r in raw,--指定存放raw資料的緩衝區
autoflush in boolean default false --指定是否自動重新整理緩衝區資料
)
(12)new_line:為檔案增加行終止符的函式
utl_file.new_line(
file in file_type,
lines in natrual :=1 --指定在檔案中增加行終止符的個數
)
(13)fflush:強制將資料寫入檔案中的函式(正常情況下,給檔案寫入資料時,會將資料暫時先存放在緩衝區中)
utl_file.fflush(file in file_type)
(14)fremove:用於刪除磁碟檔案
utl_file.fremove(
location in varchar2, --指定路徑,必須大寫
filename in varchar2 --指定要刪除的檔名
)
(15)fcopy:用於將原始檔的全部或部分內容複製到目標檔案中,在使用該函式的過程中,如果不設定起始行和結束行,將複製檔案所有內容
utl_file.fcopy(
location
invarchar2,
-- 指定源directory路徑物件
filename
invarchar2,
-- 指定檔名
dest_dir
invarchar2,
-- 希望複製到的directory路徑物件
dest_file
invarchar2,
-- 複製後的檔名
start_line
inpls_integer
default
1,
-- 指定起始行號
end_line
inpls_integer
default
null
-- 指定結束行號
);(16)frename:用於修改已存在的檔名稱
utl_file.frename(
location
invarchar2,
filename
invarchar2,
dest_dir
invarchar2,
dest_file
invarchar2,
overwrite
inboolean default
false
-- 是否覆蓋已經存在的檔案
);
Matlab將資料寫入檔案
1 清理現有工作區 2 準備寫入資料 3 獲取目標檔案寫入操作許可權 4 將資料寫入目標檔案 5 將檔案操作入口關閉 6 將寫入的檔案內容展示在控制台 清理工作區 clear clc 準備寫入資料 x 0 0.01 pi y sin x 這個圖畫不畫都可以 plot x,y 獲取目標檔案寫入許可權 ...
寫入資料java將資料寫入到csv檔案
這兩天一直在查詢寫入資料之類的問題,下午正好有機會和大家討論一下.對於csv件文,因為要將資料分離的寫入到個一每單元格中。用什麼來開分以後單元格和下乙個單元格之間呢?這裡就用到了 逗號可以割分單元格。舉例說明 我們這裡用乙個輸出流將資料寫入到csv件文中 fileoutputstream fos n...
將DataGrid資料寫入Excel檔案
程式 this.enableviewstate false system.globalization.cultureinfo mycitrad new system.globalization.cultureinfo zh cn true system.io.stringwriter ostring...