我是新手,现有200个相同结构的表,如EMPLOYEE1,EMPLOYEE2 ,,,EMPLOYEE200,假设我想把字段EMP_NAME导出到文本文件中,该如何做呢? 

解决方案 »

  1.   

    补充一下,用的是ORACLE 10g。
      

  2.   

    SQL> spool c:\txt.txt
    Started spooling to c:\txt.txt
     
    SQL> select a.a1 from a where rownum < 3;
     
    A1
    ------
    001
    002
     
    Executed in 0.047 seconds
     
    SQL> spool off
    Stopped spooling to c:\txt.txt
     
    SQL> 表多可以做个循环。
      

  3.   

    如何做循环呢?因为表名是变化的,SELECT中好象不能用变量。
      

  4.   

    spool c:\txt.txt
    declare
          my_cur sys_refcursor;
          v_table user_tables.table_name%type;
    begin
          open my_cur for select table_name from user_tables where table_name like 'EMPLOYEE%';
          loop
                fetch my_cur into v_table;
                exit when my_cur%notfound;
                --- 动态语句输出某字段数据,该自己动动手了。
                dbms_output.put_line(v_table);      
          end loop;
    end;
    /
    spool off
      

  5.   

    用pl/sql developer -- tools-- import user objects
      

  6.   

    多谢feng2,你的代码确实可以返回表名。
    但是,我刚刚接触ORACLE,不知如何写动态语句。到网上查了一下,说用execute immediate sql_str 可以执行动态查询,于是我自己动了动手,加上“execute immediate ' select  emp_name from '||v_table",但我在sql plus里无法看到查询结果。再查,说execute immediate 不能返回多行数据。于是,我又不会了。
      

  7.   

    你可以在循环中将需要的数据插入到一个新表中,
    再用
    spool c:\file.txt
    select column from newtable;
    spool off
      

  8.   

    谢谢FENG2。这个办法我想过,可是我要导出的表有很多行(3-5万条),我也不想对服务器上的数据有太多操作。
      

  9.   

    粘上一段代码,以便参考:
    set serveriutput on
    declare 
    v_ename emp.ename%type; 
    v_salary emp.salary%type;
    cursor c_emp is select ename,salary from emp; 
    begin 
         open c_emp; 
         loop
         fetch c_emp into v_ename,v_salary;
         exit when c_emp%notfound; 
         dbms_output.put_line('salary of employee'|| v_ename ||'is'|| v_salary);
    end
      

  10.   

    借助PLSQL Developer工具,很容易就导出了
      

  11.   

    最新版本地址
    http://www.allroundautomations.com/plsqldev80.html
      

  12.   

    如果你要导出成1个文件
    select username from a1
    union all
    select username from a2

    select username from a200