您好,欢迎访问一九零五行业门户网

Oracle批量导出表数据到CSV文件

需求:把oracle数据库中符合条件的n多表,导出成csv文本文件,并以表名.csv为文件名存放。 实现:通过存储过程中utl_file函数来实
需求:把oracle数据库中符合条件的n多表,导出成csv文本文件,并以表名.csv为文件名存放。
实现:通过存储过程中utl_file函数来实现。导出的csv文件放入提前创建好的directory中。
oracle awr报告生成与查看
在centos 6.4下安装oracle 11gr2(x64)
oracle 11gr2 在vmware虚拟机中安装步骤
debian 下 安装 oracle 11g xe r2
oracle awr报告生成步骤
oracle数据库表导出和导入csv文件操作
使用方法:使用以下命令数据预执行的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;
/
本文永久更新链接地址:

其它类似信息

推荐信息