A. 教你如何把Oracle表中的數據導出成Txt格式
上周做系統演示時需要手工製造一些文本數據充當數據源,想偷偷懶就用了Toad工具直接查詢後導出成csv格式。今天正好有點時間,整理了一下思路,用sql去實現文本數據的生成。寫了大致框架,有空時再來完善吧。 步驟如下: 新建一個sql腳本 d:\czrk.sql,代碼如下: SET echo off SET feedback off SET newpage none SET pagesize 50000 SET linesize 20000 SET verify off SET pagesize 0 SET term off SET trims ON SET heading off SET trimspool ON SET trimout ON SET timing off SET verify off SET colsep | spool d:\czrk.txt SELECT sfzh || ',' || xm || ',' || xb || ',' || csrq || ',' || mz|| ',' || xzqh|| ',' || jzdz FROM m_czrk WHERE rownum<=10000; spool off sqlplus連接上資料庫,執行腳本 sqlplus dc/dc@mydb; 這樣就在d盤下生成了一萬條數據了。
B. oracle怎麼把表導出為txt文件
1.plsqldev 裡面有一個選項可以把表以excel格式到時
2.使用spool
[sql] view plain
sqlplus / as sysdba
set linesize 1000
set pagesize 0
set echo off
set termout off
set heading off
set feedback off
SET trims ON
set term off
SET trimspool ON
SET trimout ON
spool '/archlog/exp/test.txt';
select OWNER||' , '||SEGMENT_NAME||' , '||PARTITION_NAME||' , ' from dba_segments where rownum<100;
spool off;
#輸出的test.txt文件頭尾要編輯下
#set term off 只有在使用.sql腳本文件時才起作用,如上雖然指定了 set term off但是還是會把結果輸出,也就是說set term off設置只對sql腳本有用
3.使用UTL_FILE程序包
##UTL_FILE.FOPEN第一個參數為文件路徑,不能直接指定絕對路徑,需要建立directory,然後指定我們建立的directory
sqlplus / as sysdba
create directory MY_DIR as '/home/oracle/';
grant read,write on directory dir_mp to HR;##也可以直接建立一個public directory
[sql] view plain
CREATE OR REPLACE PROCEDURE test
IS
testjiao_handle UTL_FILE.file_type;
BEGIN
test_handle := UTL_FILE.FOPEN('MY_DIR','test.txt','w');
FOR x IN (SELECT * FROM TESTJIAO) LOOP
UTL_FILE.PUT_LINE(test_handle,x.ID || ',' || x.RQ ||',');
END LOOP;
UTL_FILE.FCLOSE(test_handle);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM,1,2000));
END;
/
C. 如何把oracle一個表的數據導出為一個txt文件
如果數據量比較大的話,還是用d.c.b.a的ociuldr吧,也省得sqlplus spool還要麻煩地格式化輸出
D. 如何正確把Oracle數據導出成Txt 的格式
簡單的就下載個PL/SQL,連接ORACLE後用其自帶的導出導入功能就可以了,很方便。復雜點的
就用sqlldr spool(oracl自帶的),網上有很多例子
sqlldr導出txt
利用spool 導出txt
1.寫output.sql
sqlplus system/psw@db as sysdba --連接oracle
CHARACTERSET
al32UTF8 --設置編碼集
set trimspool
on --打開池
spool
c:\output\output.txt --池輸出路徑
set pagesize
0 --頁設置
set heading
off --關閉表頭
set linesize
32767 --最大行顯
select
'#'||col1||'#,#'||col2||'#,#'||col3||'#『 --設置需要的列格式。此例,列間以以逗號分隔,列內容用#引起。
from test_data;
exit;
--退出sqlplus
spool off
--關閉池
pause
E. 如果從oracle資料庫中的某張表a1導出某種條件的數據到.txt文件
一般不直接輸成.txt文件的,一般利用spool存為.sql的
腳本文件
,你用記事本就可以直接打開和修改的,雙擊它就會在sql
server裡面打開,其實是符合你的要求的
如你想保存
select
*
from
table_test;語句的結果,可以在
sql*plus
裡面這樣:
SPOOL
c:\resultfortest.sql
//這個是文件的位置
select
*
from
table_test;
SPOOL
OFF
完成輸出
F. 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路徑下會發現已經有新文件生成
存儲過程的話,如果表名和欄位名跟你一致的話,你無須修改
G. 如何使用SQL語句將Oracle資料庫表導出為TXT文件
可用spool的方式將oracle的數據導出成文本。
1、登錄sqlplus到指定資料庫。
2、在某一路徑,如c盤data目錄下,創建腳本,文件名為:導出腳本.sql 內容如下:
set colsep '|' --設置|為列分隔符
settrimspoolon
setlinesize120
setpagesize2000
setnewpage1
setheadingoff
settermoff
setnum18
setfeedbackoff
spoolc:data導出.txt
select*fromemp;
spooloff
3、執行命令:
@C:data導出腳本.sql
4、執行結束後,c盤data目錄下會生成導出.txt的文件,里邊內容就是導出表中的內容。