批量匯出表資料到CSV檔案

2021-12-30 11:23:10 字數 2229 閱讀 8240

實現:通過儲存過程中utl_file函式來實現。匯出的csv檔案放入提前建立好的directory中。

使用方法:使用以下命令資料預執行的sql指令碼

select 'exec sql_to_csv(''select * from ' ||t.table_name ||

''',''out_put_csv''' || ',''ods_mds.' || t.table_name ||

'.csv'');'

from user_tables t

指令碼說明:sql_to_csv 儲存過程名;out_put_csv資料庫目錄名稱;ods_mds預定義的schema名稱;

儲存過程**如下:

create or replace procedure chenqy.sql_to_csv

( p_query in varchar2, -- plsql文

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;

/

批量匯出表資料到CSV檔案

需求 把oracle資料庫中符合條件的n多表。匯出成csv文字檔案。並以表名.csv為檔名稱存放。實現 通過儲存過程中utl file函式來實現。匯出的csv檔案放入提前建立好的directory中。用法 使用下面命令資料預執行的sql指令碼 select exec sql to csv selec...

Mysql 匯出表資料到 csv

select from users into outfile f develop mysql57 uploads users.csv character set utf8 fields terminated by optionally enclosed by escaped by lines ter...

PHP匯出資料到CSV檔案

後台往往需要匯出各種資料到 excel文件中。通常我們是匯出 csv檔案格式,php匯出函式參考 如下 匯出資料到csv檔案 param array data 二維陣列 模擬資料表記錄 param array titlelist 標題陣列列表 param string filename csv檔名 ...