oracle導出數據到txt文件方法整理

oracle導出數據到txt文件方法整理

select 'sqlplus username/pswd@tns @spool_data.sql '||owner||' '||table_name from dba_tables where owner=upper('&schema_name') ;

 

將下面的腳本內容,放入到spool_data.sql中
set pagesize 0
-- This script dumps a table to a comma delimited ASCII file and 
-- also builds a control file and a parameter file for SQL*Loader.
 
set trimspool on 
set serverout on 
clear buffer 
undef dumpfile 
undef dumptable 
undef dumpowner 
var maxcol number 
var linelen number 
var longlen number
var dumpfile char(40) 
col column_id noprint 
set pages 0 feed off termout on echo off verify off 
set timing off
var  dumpowner VARCHAR2
VAR  dumptable VARCHAR2

define dumpowner = &1
define dumptable = &2;

begin 
  select max (column_id) 
  into   :maxcol 
  from   all_tab_columns 
  where  table_name = rtrim (upper ('&dumptable')) and 
         owner      = rtrim (upper ('&dumpowner')); 
         
  select sum (data_length) + (:maxcol * 3)
  into   :linelen 
  from   all_tab_columns 
  where  table_name = rtrim (upper ('&dumptable')) and 
         owner      = rtrim (upper ('&dumpowner')); 
  
  
  select max (data_length)
  into   :longlen 
  from   all_tab_columns 
  where  table_name = rtrim (upper ('&dumptable')) and 
         owner      = rtrim (upper ('&dumpowner'));
end; 

print linelen 
print maxcol 
print longlen

spool extract_tmp.sql 
select 'set trimspool on' from dual; 
select 'set termout off pages 0 heading off echo off' from dual; 
select 'set line '||:linelen  ||' long '|| :longlen ||' longc ' || :longlen from dual; 
select 'set timing off' from dual; 
select 'alter session set nls_date_format='||''''||'yyyy-mm-dd hh24:mi:ss'||''';' from dual;
select 'spool '||upper ('&dumptable')||'.txt' from dual; 
select 'select'||chr (10) from dual; 
select '   '||decode (DATA_TYPE, 'CLOB',     'DBMS_LOB.getlength('||column_name||')','BLOB','DBMS_LOB.getlength('||column_name||')', column_name)||' ||'||''''||chr(124)||''''||' || ', column_id 
from   all_tab_columns 
where  table_name = upper ('&dumptable') and 
        owner      = upper ('&dumpowner') and 
       column_id  < :maxcol 
union 
select '   '||decode (DATA_TYPE, 'CLOB',     'DBMS_LOB.getlength('||column_name||')','BLOB','DBMS_LOB.getlength('||column_name||')', column_name),column_id
from   all_tab_columns 
where  table_name = upper ('&dumptable') and 
       owner      = upper ('&dumpowner') and 
       column_id  = :maxcol 
order  by 2;
select 'from '||'"'||upper('&dumpowner')||'"'||'.&dumptable;' from dual; 
select 'spool off' from dual; 
spool off 
start extract_tmp.sql

exit

 

將查出來的,拿出來執行就行了,就會將每張表的數據放入到一個單獨的txt中,但是如果表中含有clob,blob的取不出來,還有換行的也會出不來

@spool_data.sql owenr segment_name

。。。

。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章