公司说要把ORACLE一些表的数据导成一个二进制文件。
为了提高导出速度,我又了一个疯狂的想法。只要输入一个ID,我把相关的10张表可能有上千万行的数据全部弄到一个BLOB字段返回给前端,觉得可行么?
具体要怎么操作?请各位达人帮忙思考一下,万分感谢!!!

解决方案 »

  1.   


    没有多大的意义.感觉你并没有降低消耗呀.还不如直接用exp导出,direct=y.来的方便. 关键是看你们的用途了.
      

  2.   

    你要干什么啊,返回给前台那么多数据,应用服务器能撑住吗?客户端能撑住吗?速度上expdp最快
      

  3.   

    有什么其他的应用要求么,exp或者是expdp(10g支持)都是可以导出到单个文件的。
      

  4.   

    业务需求是这样:输入条件为一个ID,相关数据存放在10张表里。导出之后生成一个文件,要能重新导入到10个表中,但导入前要能判断是否已经导入或是否能导入(此ID为子ID,其父ID如果不存在了,则不能导入)。EXP能带条件导出多个表吗?
      

  5.   


    那这位兄台,给个方案?exp 多表多查询怎么导出到一个文件?然后又能导入?
      

  6.   

    很抱歉,从直觉上而言,你的提议有点惊世骇俗。也许你没有理解上级的意思。
      
    如果你的应用只是很少情况才这么做,那么你也不必写程序了。 1-7楼可以解决你的需要,就是exp,imp或者expdp,impdp。不知到你的具体,只能这么建议。
    如果是并发的,并却网络中存在其它应用,不建议这么处理,因为大量的CPU,I/O,和网络可能让其它应用缓慢甚至瘫痪。
    也许你们可以采取更好的方式。
    -----------------------------------
    以上纯属妄言! 
    应另有高人能够指点一二。
      

  7.   

    oracle提供的导入导出工具难道会比楼主自己写的差?
      

  8.   

    oracle里是没办法按条件进行表数据的导入导出的。
    自己可以实现的,不过上千万的数据,效率的问题是关键。
      

  9.   

    或许是我的表达有问题?1.因为数据量巨大,为了减少硬盘负载,所以想导出然后转移。需要的时候再进行导入分析
    2.导出数据关系到10个表(多层关联),上千万行数据。导出条件为父表的一个ID
    3.exp能导出单表的查询条件,但不知道多表的查询如何导出?或者我必须要根据表关系次序做10次exp?现在明白我的需求了么?
      

  10.   

    你的情况可能涉及到两个方面:
    1)数据仓库,涉及到数据挖掘的,有巨量的数据库,如果是这样必须改变硬件以及ORACLE的安装,例如使用RAC,
       通过分区,并行等方式解决,硬件成本较高.
       这方面我所知有限.
    2)如果你的条件无法达到(包括硬件和软件),那么可以采取差一个级别的设计(其实不一定能够更差),安装更多的ORACLE实例在不同的硬件上,
       而这些硬件要求不那么高。
       按照时间或者其它条件把数据转储到不同的其它机器上(我相信这个归档的过程不会比你的设计慢),在需要的时候查询备份及其即可,
       这需要修改你的应用程序的设计思路-这种思路在大型的网站上多有应用.其它可以解决的方式没有尝试过,但估计需要用时间来换空间,如果不在乎时间也是可以尝试的.
    如果你的系统是需要需要处理比如连续10几20年的银行明细之类的,我不知道如何处理更好一些,因为很多和应用有关.
      

  11.   

    感谢楼上的回复,呵呵。应用程序框架很大,目前是不可能修改了。所以只能以文件的形式进行备份了。
    我那个设计确实有点惊世骇俗的,目前还是觉得用exp/imp(oracle还是817的,好汗)比较好,不过有一个问题就是exp的参数query不支持多个值,所以我没办法一次性导出10个表。这样,莫非我非得要用10次EXP?再用10次IMP?
      

  12.   

    你的情况可能涉及到两个方面: 
    1)数据仓库,涉及到数据挖掘的,有巨量的数据库,如果是这样必须改变硬件以及ORACLE的安装,例如使用RAC, 
      通过分区,并行等方式解决,硬件成本较高. 
      这方面我所知有限. 
    2)如果你的条件无法达到(包括硬件和软件),那么可以采取差一个级别的设计(其实不一定能够更差),安装更多的ORACLE实例在不同的硬件上, 
      而这些硬件要求不那么高。 
      按照时间或者其它条件把数据转储到不同的其它机器上(我相信这个归档的过程不会比你的设计慢),在需要的时候查询备份及其即可, 
      这需要修改你的应用程序的设计思路-这种思路在大型的网站上多有应用. 其它可以解决的方式没有尝试过,但估计需要用时间来换空间,如果不在乎时间也是可以尝试的. 
    如果你的系统是需要需要处理比如连续10几20年的银行明细之类的,我不知道如何处理更好一些,因为很多和应用有关.