大家好,小弟有个问题想请教大家一下。
我新建了个表空间叫asp
在这个数据库下有个用户SDMB_ADMIN
这个用户下有个表叫tb_sms_phrase,我想把这张表导出来,并把它导入到
另一个新建的表空间unicom中的SDMB_ADMIN用户下。
各位大哥,怎么做。小弟刚开始学oracle对这不太懂,,帮帮小弟吧。。在此谢谢了。急用,在线等。

解决方案 »

  1.   

    基本语法和实例:
        1、EXP:
           有三种主要的方式(完全、用户、表)
           1、完全:
              EXP  SYSTEM/MANAGER   BUFFER=64000  FILE=C:\FULL.DMP  FULL=Y
              如果要执行完全导出,必须具有特殊的权限
           2、用户模式:
              EXP  SONIC/SONIC     BUFFER=64000  FILE=C:\SONIC.DMP  OWNER=SONIC
              这样用户SONIC的所有对象被输出到文件中。
           3、表模式:  
              EXP  SONIC/SONIC     BUFFER=64000  FILE=C:\SONIC.DMP  OWNER=SONIC TABLES=(SONIC)
              这样用户SONIC的表SONIC就被导出
        2、IMP:
           具有三种模式(完全、用户、表)
           1、完全:
              IMP SYSTEM/MANAGER  BUFFER=64000  FILE=C:\FULL.DMP  FULL=Y
           2、用户模式:
              IMP  SONIC/SONIC     BUFFER=64000  FILE=C:\SONIC.DMP  FROMUSER=SONIC  TOUSER=SONIC
              这样用户SONIC的所有对象被导入到文件中。必须指定FROMUSER、TOUSER参数,这样才能导入数据。
           3、表模式:
              EXP  SONIC/SONIC     BUFFER=64000  FILE=C:\SONIC.DMP  OWNER=SONIC TABLES=(SONIC) 
              这样用户SONIC的表SONIC就被导入。 
      

  2.   


    如果仅仅是需要把一个表的记录或者表结构转移到另一个表空间,可以用更直接的方法:1.得到tb_sms_phrase的建表脚本
    2.更新脚本使用新的表空间
    3.insert into tb_sms_phrase_new 
      select * from tb_sms_phrase
    4.如果记录量大的话,使用/*+append*/,以提高效率
    5.有一点,你这里是同一个实例的话,即使在不同的表空间,表的名字是不可以重复的,所以,你需要命名一下,实例眼中的表,是不分表空间的,呵呵楼上推荐的方法也是很好的
    EXP  SDMB_ADMIN/SDMB_ADMIN BUFFER=64000  FILE=C:\tb_sms_phrase.DMP  OWNER= SDMB_ADMIN TABLES=(tb_sms_phrase) 
    IMP  SDMB_ADMIN/SDMB_ADMIN BUFFER=64000  FILE=C:\tb_sms_phrase.DMP  OWNER= SDMB_ADMIN TABLES=(tb_sms_phrase_new)