如何将数据库中千万级表中数据导出为TEXT文件?除了SPOOL和UTL_FILE包。多谢!

解决方案 »

  1.   

    SPOOL导出海量感觉是不合适的,文件会非常大,因为他需要固定每行的长度。如果设置的长度短了超过的字符就会被截掉,设长了就会资源浪费文件变大。
    用UTL_FILE正常点。其他方式估计得用其他语言或者第三方工具导出了
      

  2.   

    shell脚本重定向,应该也可以
      

  3.   

    使用 expdp 吧,这个速度很快;
      

  4.   

    sqluldr2  可行
      

  5.   

    使用 exp导出表空间(我导出过1.5G的数据)
    exp user/password@server file=filefullpathname 
    user为用户名 password为密码 server 为实例名如下:如果出现如下提示则表示导出成功
      

  6.   

    如果是想导出此表中的数据,可以先写好select的查询sql语句,然后导出dmp,如果这样,需要用到par包!
      

  7.   

    还可以用sqluldr2,可以用plsqlDev,toad等工具辅助导出。
    导成txt,打开是一个问题,会很卡,也不会那么直观的从里面分析数据。
    更明确的需求是什么?
      

  8.   

    sqluldr2 是正解
      

  9.   

    1、查linux版本
    [附件:sqluldr.zip]cat /proc/version
    如下结果
    Linux version 2.6.32-358.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) ) #1 SMP Tue Jan 29 11:47:41 EST 2013
    可以看到是64位的2、把本文件夹下的包sqluldr2_linux64_10204.bin拷到/opt/app/oracle/product/11.2.0/db_1/bin(对应的文件拷对应的版本)
    cp sqluldr2_linux64_10204.bin /opt/app/oracle/product/11.2.0/db_1/bin/sqluldr2.bin3、配置.bash_profile文件添加如下变量
    vi .bash_profile
    export LD_LIBRARY_PATH=$ORACLE_HOME/bin:$ORACLE_HOME/lib:/lib:/usr/lib;4、给sqluldr2.bin文件添加执行权限
    chmod 775 /opt/app/oracle/product/11.2.0/db_1/bin/sqluldr2.bin5、在/opt/app/oracle/product/11.2.0/db_1/bin/下创建get_tables.sql文件
    touch /opt/app/oracle/product/11.2.0/db_1/bin/get_tables.sql6、将需要执行的的sql语句放到get_tables.sql7、执行导出,生成testexport.csv文件
    sqluldr2.bin USER=用户名/密码@DB名 sql=get_tables.sql charset=ZHS16GBK head=yes text=CSV FILE=/opt/app/oracle/product/11.2.0/db_1/bin/testexport_2.txt8、到excel转换