用语句 在Oracle SQL*Plus 将表导成 execl

解决方案 »

  1.   

    Oracle导出数据为excel或文本文件
    /*
    将oracle中表的数据导出为excel文件保存,在网上看了很多方法,总的来说有两种。
    一是运用excel工具中通过ODBC连接oracle数据库,将文本导出。
    一是通过oracle的命令导出。基本上想运用各种第三方工具之类的。如:PL/sql developer 先查询再将结果存为excel或者Copy进excel中。先来说说第一个方法,此方法可行但是有条件限制。如果导出的数据超过65535条就不行。而且这也是excel能打开的最大上限,超过这个数excel也不会装载成功。
    方法是
    在excel中“数据”--“导入数据”,可以选择新建一个数据源配置好数据连接的参数。也可以选择数据库查询。这个需要先在数据源中建好ODBC的数据源Driver。连接上后,选择需要导出的表,查询,将结果导入excel中即可。数据量小是此方法非常方便。第二个方法也是需要先查询出来再保存。如果数据库的缓存设置过小的话,返回的数据量会小,数据量大的话此方法也行不通。后来在网上看到一个小工具,别人开发的。对7,80多万的数据导出成文本也只要十几秒。
    非常好。
    下面是使用的命令:
    Usage: ociuldr user=... query=... field=... record=... file=...
    (@) Copyright Lou Fangxin 2004/2005, all rights reserved.
    Notes:
           -si   = enable logon as SYSDBA
           user  = username/password@tnsname
           sql   = SQL file name, one sql per file, do not include ";"
           query = select statement
           field = seperator string between fields
           record= seperator string between records
           file  = output file name(default: uldrdata.txt)
           read  = set DB_FILE_MULTIBLOCK_READ_COUNT at session level
           sort  = set SORT_AREA_SIZE & SORT_AREA_RETAINED_SIZE at session level (UNIT:MB)
           hash  = set HASH_AREA_SIZE at session level (UNIT:MB)
           serial= set _serial_direct_read to TRUE at session level
           trace = set event 10046 to given level at session level  for field and record, you can use '0x' to specify hex character code,
      \r=0x0d \n=0x0a |=0x7c ,=0x2c \t=0x09
    用","来作为字段间的分隔符, 用换行作为记录的分隔符:
    E:\tools\developtool\ociuldr>ociuldr user=test/test@mydb query="select * from BXLMCHAIN_RAW_N" field=, record=0x0a file=BXLMCHAIN_RAW.txt*/
      

  2.   

    Oracle数据的导入和导出(Excel)
      

  3.   

    可以用SPOOL导出 但是我没试过。。我导出在一个txt中
      

  4.   

    spool d:\files.xls
    select * from all_tables;
    spool off;