我现在想把ORACLE中某一用户(比如TT用户)下中的表和试图都导出为TXT文件,我客户端用的是TOAD,用TOAD是可以一个表一个表的导出的,不知是否有批量导出工具?急用,请各位大侠给予帮助!万分感谢!

解决方案 »

  1.   

    利用存储过程将表中数据导出到.txt文件
    看昨天论坛里有一个人问的,给写的一个例子,这里边假设表中只有字符型,数值型,日期型数据了,有投机取巧的嫌疑    --*********************************************************************
    --***
    --***首先以dba或者是其他具有create directory的用户创建directory,然后授权
    --***
    --*********************************************************************
    CREATE OR REPLACE DIRECTORY dir_jiang AS 'd:\oracle';
    GRANT read,write ON directory dir_jiang TO scott;--*********************************************************************
    --***
    --***执行导出文本文件的存储过程:p_exp
    --***p_tname:要导出的表明;p_query:where条件,根据这个条件导出,如果为null,则全表导出
    --***
    --***
    --*********************************************************************
    create or replace procedure p_exp(p_tname varchar2,p_query varchar2)
    as
      v_line   varchar2(2000);                       --记录的数据
      v_sql    varchar2(2000);                       --动态sql变量
      v_fname  varchar2(40);                         --导出数据的文件名字
      cursor cursor_column                           --游标:通过数据字典查找出表有哪些字段
             is select column_name,data_type 
             from user_tab_columns where table_name=upper(p_tname);
      type type_cursor is ref cursor ; 
      mycursor type_cursor; 
      outf utl_file.file_type;
      
    begin
      v_fname:=p_tname||'.txt';
      for col in cursor_column loop
         if col.data_type='DATE' then
              v_sql:=v_sql||'to_char('||col.column_name||',''yyyy-mm-dd-hh24:mi:ss'')'||'||chr(9)||';
         else
              v_sql:=v_sql||col.column_name||'||chr(9)||';
         end if;
      end loop;
      v_sql:=rtrim(v_sql,'||chr(9)||');
      v_sql:='select '||v_sql||' from '||p_tname||' '||p_query;
      dbms_output.put_line(v_sql);
      outf:=utl_file.fopen('DIR_JIANG',v_fname,'w');
      open mycursor for v_sql;
      loop 
        fetch mycursor into v_line;     
        exit when mycursor%notfound; 
        utl_file.put_line(outf,v_line);
      end loop;
      utl_file.fclose(outf);
      dbms_output.put_line('导出成功');
    end;
      

  2.   

    上面是一个存储过程,这个表名你可以通过USER_TABLE动态获取。。可以实现批量导入。。
      

  3.   

    使用pl/sql developer导出吧,PL/SQL Developer不到20M,安装方便
    是居家旅行,IT人员.......(哈哈~不要砸砖...)菜单->Export User Objects...
      

  4.   

    上面是一个存储过程,这个表名你可以通过USER_TABLE动态获取。。可以实现批量导入。。
      

  5.   

    很惭愧,不知道怎么通过USER_TABLE动态获取,能具体说说吗?
      

  6.   

    上面是一个存储过程,这个表名你可以通过USER_TABLE动态获取。。可以实现批量导入。。
      

  7.   


    +1
    安装PL/SQL Developer也方便啊!
      

  8.   


    怎么通过USER_TABLE动态获取啊?
      

  9.   

    pl/sql developer    ----->tools   ----->  export user object 然后选中你要导出的视图(可以按住shift来多选),导出的事sql文件。跟你说的txt应该也可以。
    Output file 是你要导出的位置。
                          HOME_ning(玩物丧志)