如何将指定的表(结构和数据)复制到另一个数据中
同时希望源表中的 二进制字段也能完整复制过去。
新手望大家指点!

解决方案 »

  1.   

    create table A as select * from B;B是原来的表,A是新表..
      

  2.   

    这样数据也都进去了吗?
    我一个oracle 服务名 叫 orcl1 第二个叫 orcl2
    我想把 oracl 里面的db1下的表 tabl1 连同数据一起复制到 orcl2 下 的db2 中应该如何操作啊?
      

  3.   

    跨数据库了呀,也是可以的,你在建个DB link,在执行上面的语句就可以了。 还有一种方法,就是先把那个表export出来,在在orcal下把这个表import进去。 楼主可以google一下,export/import 表,有很多资料的..供参考:
    Oracle DB Link 
    http://user.qzone.qq.com/251097186/blog/1246948303
    数据库之间的链接建立在DATABASE LINK上。要创建一个DB LINK,必须先在每个数据库服务器上设置链接字符串。 
       
    1、 配置TNS , $ORACLE_HOME/NETWORK/ADMIN/tnsname.ora 
    10gstandby = 
      (DESCRIPTION = 
        (ADDRESS = (PROTOCOL = TCP)(HOST = HFCC-KF-3068)(PORT = 1522)) 
        (CONNECT_DATA = 
          (SERVER = DEDICATED) 
          (SERVICE_NAME = 10gstandby) 
        ) 
      ) 
       
    2、创建数据库链接, 
    create public database link DB_LINK_NAME connect to TargetDatabaseUserName identified by TargetDatabasePassword using 'TargetDatabaseSIDName'; 
    注:TargetDatabaseSIDName为该Oracle数据库所在的主机上的tnsnames.ora文件里边定义的数据库连接串。 
       
    SQL>create public database link dvd connect to system identified by system using 'orcl10g'; 
       
    则创建了一个以system用户和orcl10g数据库的链接dvd,我们查询dvd数据: 
       
    SQL>select * from [email=all_users@dvd]all_users@dvd[/email];   
       
    这样就可以把本地和远程的数据做成一个整体来处理。 
       
    3、建立同义词,为了使有关分布式操作更透明,ORACLE数据库里有同义词的对象synonym 
       
    SQL>create synonym synTest for [email=all_users@dvd]all_users@dvd[/email]; 
       
    于是就可以用synTest来替代带@符号的分布式链接操作[email=all_users@dvd]all_users@dvd[/email]; 
       
    4、查看所有的数据库链接: 
       
    SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK'; 5、查看数据库连接 
    sql> select owner, db_link from dba_db_links; 
    ower    db_link 
    public   DVD.REGRESS.RDBMS.DEV.US.ORACLE.COM 6、删除数据库连接 
    先从第5步中查看数据库连接,取得其db_link的名称 
    sql>drop public database link DVD.REGRESS.RDBMS.DEV.US.ORACLE.COM 
    数据库连接巳丢弃 
      

  4.   

    看下你需要哪些数据导出:
    1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
      exp system/manager@TEST file=d:\daochu.dmp full=y
    2 将数据库中system用户与sys用户的表导出
      exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
    3 将数据库中的表inner_notify、notify_staff_relat导出
       exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=(inner_notify,notify_staff_relat) 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
      exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
     
     上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。
     也可以在上面命令后面 加上 compress=y 来实现。数据的导入
    1 将D:\daochu.dmp 中的数据导入 TEST数据库中。
      imp system/manager@TEST  file=d:\daochu.dmp
      imp aichannel/aichannel@HUST full=y  file=d:\data\newsmgnt.dmp ignore=y 
      上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
      在后面加上 ignore=y 就可以了。
    2 将d:\daochu.dmp中的表table1 导入
    imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1) 基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。注意:
    操作者要有足够的权限,权限不够它会提示。
    数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。附录一:
    给用户增加导入数据权限的操作
    第一,启动sql*puls
    第二,以system/manager登陆
    第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略)
    第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
      DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
         DBA,CONNECT,RESOURCE,CREATE SESSION  TO 用户名字 
    第五, 运行-cmd-进入dmp文件所在的目录, 
         imp userid=system/manager full=y file=*.dmp
         或者 imp userid=system/manager full=y file=filename.dmp
    本贴来自天极网群乐社区--http://q.yesky.com/group/review-17556591.html