ORACLE匯出CSV檔案

2021-08-20 10:44:55 字數 2393 閱讀 2833

oracle的匯出功能會經常使用,也同樣經常會有需求進行匯出為csv檔案,用於往別的資料庫進行遷移,本次例項及在oracle實現匯出csv檔案操作。

sqlplus / as sysdba

sql > create or replace directory out_path as '/home/wenxuechao/csv_file';

sql > grant read ,write on directory out_path to ora_wen;

sqlplus ora_wen/ora_wen

create or replace procedure sql_to_csv

( p_query in varchar2, -- 執行sql

p_dir in varchar2, -- 匯出檔案的存放路徑

p_filename in varchar2 -- csv檔名稱

) is

l_output utl_file.file_type;

l_thecursor integer default dbms_sql.open_cursor;

l_columnvalue varchar2(4000);

l_status integer;

l_colcnt number := 0;

l_separator varchar2(1);

l_desctbl dbms_sql.desc_tab;

p_max_linesize number := 32000;

begin

--open file

l_output := utl_file.fopen(p_dir, p_filename, 'w', p_max_linesize);

--define date format

execute immediate 'alter session set nls_date_format=''yyyy-mm-dd hh24:mi:ss''';

--open cursor

dbms_sql.parse(l_thecursor, p_query, dbms_sql.native);

dbms_sql.describe_columns(l_thecursor, l_colcnt, l_desctbl);

--dump table column name

for i in 1 .. l_colcnt loop

utl_file.put(l_output,l_separator || '"' || l_desctbl(i).col_name || '"'); --輸出字段

dbms_sql.define_column(l_thecursor, i, l_columnvalue, 4000);

l_separator := ',';

end loop;

utl_file.new_line(l_output); --輸出字段

--execute the query statement

l_status := dbms_sql.execute(l_thecursor);

--dump table column value

while (dbms_sql.fetch_rows(l_thecursor) > 0) loop

l_separator := '';

for i in 1 .. l_colcnt loop

dbms_sql.column_value(l_thecursor, i, l_columnvalue);

utl_file.put(l_output,

l_separator || '"' ||

trim(both ' ' from replace(l_columnvalue, '"', '""')) || '"');

l_separator := ',';

end loop;

utl_file.new_line(l_output);

end loop;

--close cursor

dbms_sql.close_cursor(l_thecursor);

--close file

utl_file.fclose(l_output);

exception

when others then

raise;

end;

/

exec sql_to_csv('select * from test where upd_dt=20180206','out_path','ods_mds.test.csv');
執行即可生成所需資料

該種方式適合匯出適量的檔案進行使用,如若是上億級別或者tb級別的還是建議使用oracle的自帶的匯出命令進行執行,更加高效。

java web匯出csv檔案

用csv匯出取代excel匯出的原因 poi匯出excel時會出現以下問題 excel2003 單sheet最多只能匯出65536條資料 excel2007 單sheet能匯出百萬級資料,彌補了2003的缺陷 excel每建立乙個單元格就會生成乙個物件,並且excel生成過程中不會釋放物件,所以會占...

匯出csv檔案示例

匯出csv檔案示例 csv檔案預設以英文逗號,做為列分隔符換行符 n作為行分隔符,寫入到乙個.csv檔案即可。含有英文逗號,和換行符會發生資料輸出會出現混亂,下面列出一些處理方法。特殊字元處理 1 含有英文逗號或換行符。這時可以使用雙引號 來將該字段內容括起來,csv預設認為由 括起來的內容是乙個字...

mysqldump 匯出CSV檔案

mysqldump 作為乙個資料匯出常用的命令 把相關的資料匯出成csv格式的檔案 mysqldump h 127.0.0.1 u root p database table t t home mysql fields enclosed by fields terminated by w 增加條件判...