日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

将oracle导出成文本文件,oracle 数据能否导出成纯文本文件呢?

發布時間:2025/3/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 将oracle导出成文本文件,oracle 数据能否导出成纯文本文件呢? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

--需要打開初始化參數utl_file_dir,重新db生效.(utl_file_dir = *).

--alter system set utl_file_dir=* scope=spfile;

--shutdown immediate

--startup

create or replace procedure output_table_data

(

i_tablename in varchar2,

o_result out number,

o_errormessage out varchar2

)

as

cursor c1(m_tablename varchar2) is select column_name from user_tab_columns

where table_name=m_tablename order by column_id;

C2 ? ? ? ? ? ? ? ???C1%rowtype;

m_result ? ? ? ???number;

m_errormessage varchar2(512);

m_columns ? ? ? ???varchar2(10000);

m_sql ? ? ? ???varchar2(10000);

m_otext ? ? ? ???varchar2(10000);

beginflag ? ? ? ???number;

the_c1 ? ? ? ???integer;

fdbk ? ? ? ? ? ? ? ???INTEGER;

f_handle ? ? ? ???utl_file.file_type;

begin

beginflag :=0;

open c1(i_tablename);

loop

fetch c1 into c2;

exit when c1%notfound or c1%notfound is null;

--dbms_output.put_line('m_columns='||m_columns);

if beginflag = 0 then

m_columns := '''"'''||'||replace("'||c2.column_name||'"'||','||'''"'''

||','||''''''||')'||'||'||'''"''';

else

m_columns := m_columns||'||'||''','''||'||'||'''"'''||'||replace("'||

c2.column_name||'"'||','||'''"'''||','||''''''||')'||'||'||'''"''';

end if;

beginflag := 1;

end loop;

close c1;

m_sql :='select '||m_columns||' from '||i_tablename;

the_c1 :=dbms_sql.open_cursor;

dbms_sql.parse(the_c1,m_sql,dbms_sql.v7);

dbms_sql.define_column(the_c1,1,m_otext,3800);

fdbk := dbms_sql.execute(the_c1);

dbms_output.put_line('fdbk='||fdbk);

f_handle:=utl_file.fopen('c:\',i_tablename||'.txt','w',32767);

loop

--fetch next row. exit when done.

exit when dbms_sql.fetch_rows (the_c1) = 0;

dbms_sql.column_value (the_c1, 1,m_otext);

utl_file.put_line(f_handle,replace(replace(m_otext,chr(10),'') ,chr(13),''));

end loop;

dbms_sql.close_cursor(the_c1);

utl_file.fclose(f_handle);

o_result:=0;

exception

when others then

dbms_sql.close_cursor(the_c1);

utl_file.fclose(f_handle);

m_result := sqlcode;

m_errormessage := m_result||substr(sqlerrm,1,200);

o_result:=-1;

o_errormessage := m_errormessage;

end;

/

--示例:文件生成在根目錄c:\??下面,如果是unix,自己改一下存儲過程中路徑(c:\)

var m_result number;

var m_errormessage varchar2(512);

exec output_table_data('TABLE_NAME',:m_result,:m_errormessage);

print m_result;

print m_errormessage;

--生成的文件如下:c:\test.txt,用"括上字符串,這樣可以防止一些長字符串中有非法的字符,如逗號之類的,用","分隔.

"1","test"

"2","test2"

總結

以上是生活随笔為你收集整理的将oracle导出成文本文件,oracle 数据能否导出成纯文本文件呢?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。