我现在要备份数据库表里的一个表,可是这个表里有个字段是Long的,我按原始的那种命令备份出来之后,这个字段里的值全是空的,我怎么才能将我这个表里的所有信息都备份出来?Long的这个字段是个很长的sql拼装起来的,怎么能完成的把这个表备份出来? 
   我现在在另一台机子上想建造一个和上面那个表一样的表,怎么才能备份出上面那个表来?还请高手指点,谢谢!

解决方案 »

  1.   

    你用的什么命令备份?exp可以导出long类型
      

  2.   

    9i以及以前的版本解决不了这个问题,10G可以用expdb这个工具pl/sql develeper这个工具自带的导出导入工具可以备份这个数据
      

  3.   

    exp是可以导出long的,不过由于long的限制诸多,所以导出导入的时候会出现一些错误,把你的错误贴出来看看,或者把你的buffer设置的大一些试试。
      

  4.   

    我是用exp导出的,是Oracle 9数据库,由于是远程操作,不能使用pl/sql develeper工具,只好用命令操作,我用的就是exp username/password,导出数据的时候不报错,等我导完之后远程ftp到我本地导入我本地库的时候,这个表里的值就是空的了。
      

  5.   

    如果备份时候是备份到数据库服务器上,Long数据时可以备份出来的,有可能是俩个数据库版本不一致的问题。
      

  6.   

    可是数据库里其他字段都是可以备份的,唯独就这一个字段是不行的,是不是我规定这个字段的太小了导致的?那个buffer应该设置多大?默认的不是4096吗?我那个表里一共有200多条记录,370多M,几乎每个记录都是这个Long占大小。
      

  7.   

    是的,远程数据库是9,我本地库是10,不过所有的都能导,就这一个导不过,好像在本地用plsql也是导不了的,当初本地的库就是那边的人导过来带回来的,唯独这张表导不了就没导,到底是什么原因呢?
      

  8.   

    如果源表字段是Long类型,目的表字段应为Clob类型。
    如果源表字段是LongRaw类型,目的表字段应为Blob类型。
    二者通过To_Lob函数转换。
      

  9.   

    你好,可以再说的详细一点吗?你的意思是我本地库里的这个表还得我自己创建,而把Long类型的那个字段设置成Clob类型?可是我远程库里的数据还是备份不出来呀,Long类型的那个字段怎么备份他才能有数据?
      

  10.   

    如果源表字段是Long类型,目的表(新建的表,表结构和源表相同,用Clob类型字段对应源表Long类型字段)字段应为Clob类型。
    如果源表字段是LongRaw类型,目的表((新建的表,表结构和源表相同,用Blob类型字段对应源表LongRaw类型字段))字段应为Blob类型。
    二者通过To_Lob函数转换。
    我说的表之间备份。insert A1,B1 TableName --TableName 为新建的表。
                   select A,to_lob(B) from TableName0--TableName0为源表
      

  11.   

    可以考虑把long去掉。改为其它数据类型。我最讨厌这个字段了。。
      

  12.   

    是不是ftp传输造成的,你传输之前用md5加密,传输后再解密看看是否文件损坏了
      

  13.   

    我备份之后的那个文件里就没有这个Long字段的值,ftp下载之后的文件和远程服务器上的文件是一样大小的。