我这里有100多张表需要把里面的数据导成文件。如果我每个表写一个过程来导出,工作量是非常巨大的。
现在有一个设想:
建立一个存储过程P_TABLE2FILE(tablename varchar2),只需要传进表名,就生成相应的文件。这个存储过程如何来写呢?
我试了几天了,还是找不到实现的方法。希望高手指导一下!

解决方案 »

  1.   

    如果表的数据量巨大,这样的效率会很慢的。
    一定要导出成文本文件么?不是的话,用expdp和impdp吧
      

  2.   

    过程里调用spool,还是很好实现的吧
      

  3.   

    过程里面好像不能写spool。
    用shell来做比较方便.
    cat table.list | while read table 
    do
    sqlplus -s $USER/$PWD@$TNS << EOF > /dev/null 2>&1
        set time off;
        set echo off;
        set head off;
        set wrap off;
        set linesize 10000;
        set pagesize 0;
        set trims on;
        set feedback off;
        spool ${table}.txt;
        select * from ${table};
        spool off;
        exit;
    EOF
    done
      

  4.   

    倒成文本文件可以用sqlldr啊。倒出的表多,可以先写一个存储过程,生成sqlldr需要的格式定制文件*.ctl。
      

  5.   

    汗,记错了。sqlldr只能进不能出。
      

  6.   

    不能用shell呀。。只能用存储过程如何实现呢?
      

  7.   

    用PL/SQL DEVELOPER,在Tools-->Export Tables导出你要的表。
      

  8.   

    推荐用一些开源的ETL工具,比如KETTLE! 导出可配置,可重用;我就经常用这个导出数据!
      

  9.   

    我前一段时间也过这样的类似的需求:方案一:
    数据量不大的情况下,可以通过Toad,直接导出。(具体操作:菜单栏Database-->Import-->Import Table Date)方案二:
    数据量大的情况下,编写java程序,多线程读取数据,往txt文件导入。