A. oracle將表A里的數據導出為txt文件,用存儲過程怎麼寫
分幾個步驟
1,創建輸出路徑,比如你要在c盤test目錄下輸出,你就先要建立好這個test路徑
2,sqlplus下以sysdba登錄,執行以下語句
3,create or replace directory TMP as 'c: est';
4,grant read,write on directory TMP to 你要生成文件的用戶;
5,alter system set utl_file_dir='c: est' scope=spfile;
以上步驟執行完,需要重啟資料庫
6,最重要的一步開始了,創建存儲過程
createorreplacePROCEDURESP_OUTPUT
is
file_handleutl_file.file_type;
Write_contentVARCHAR2(1024);
Write_file_nameVARCHAR2(50);
v_idint;
v_formvarchar2(10);
cursorcur_sp_out
is
selectid,formfroma;
begin
opencur_sp_out;
loop
fetchcur_sp_outintov_id,v_form;
exitwhencur_sp_out%notfound;
write_file_name:=to_char(SYSDATE,'YYYYMMDD')||'.txt';
file_handle:=utl_file.fopen('TMP',write_file_name,'a');
write_content:=v_id||''||v_form;
--writefile
IFutl_file.is_open(file_handle)THEN
utl_file.put_line(file_handle,write_content);
ENDIF;
--closefile
utl_file.fclose(file_handle);
endloop;
closecur_sp_out;
end;
我建立了一個跟你一樣的測試表,數據如下
createtablea(idint,
formvarchar2(10));
insertintoavalues(1,'你好');
insertintoavalues(2,'你很好');
然後執行存儲過程
begin
SP_OUTPUT;
end;
執行完畢後,你在c盤test路徑下會發現已經有新文件生成
存儲過程的話,如果表名和欄位名跟你一致的話,你無須修改
B. 千萬級數據量的txt 是用什麼方法導入到oracle資料庫中比較快
使用sqlload 很快。一般要達到5000行/秒。在比較苛刻的要求下,要達到8000條/秒。
換算成你的1千萬行的數據量,大概要半個多小時。
——註: 上面是在硬體配置比較好的情況下。
C. 求一個oracle讀取txt文件的存儲過程
只用一次可以用PL/SQL導入,
多次使用,存儲過程讀取文件好像不行,還是寫一段java代碼來解決吧
D. 如何將oracle中的數據導出成txt,現在要求導出所有表成txt,spool很難實現了,如何腳本實現
其實很簡單,使用pl/sql developer 進入oracle,導出查詢結果為cvs 文件,然後用記事本打開,然後另存為TXT文件就行了
E. 怎麼將txt的數據導入oracle資料庫
將文本文件導入Oracle中需要用sqlloader的方式。
1、在資料庫中創建相應的表。
如,文本文件內容為:
1
2
3
4
create table test
(id int,
name varchar2(10),
sex varchar2(10));
2、在電腦中某路徑下編寫ctrl文件,以c盤data目錄為例,添加如下文本。如,被導入的文件名為load.txt
1
2
3
4
5
6
load data
infile 'load.txt' --被導入文件名
replace into table test
(id char terminated by ',',
name char terminated by ',',
sex char terminated by whitespace)
編寫後,將文件保存成load.ctrl
3、然後打開命令提示符,並進入到文本文件和ctrl文件所在目錄。
4、輸入以下語句,並執行。
1
sqlldr userid=用戶名/密碼@資料庫實例名 control=load.ctl log=load.log
5、導入後,test表中數據如下: