imp有个参数是TABLESPACES,但试了几次都不行?
请高手指点?

解决方案 »

  1.   

    不可以导入到指定的表空间的,imp只有以下参数:
    USERID   username/password           FULL         import entire file (N)
    BUFFER   size of data buffer         FROMUSER     list of owner usernames
    FILE     output file (EXPDAT.DMP)    TOUSER       list of usernames
    SHOW     just list file contents (N) TABLES       list of table names
    IGNORE   ignore create errors (N)    RECORDLENGTH length of IO record
    GRANTS   import grants (Y)           INCTYPE      incremental import type
    INDEXES  import indexes (Y)          COMMIT       commit array insert (N)
    ROWS     import data rows (Y)        PARFILE      parameter filename
    LOG      log file of screen output
    DESTROY  overwrite tablespace data file (N)
    INDEXFILE write table/index info to specified file
    CHARSET  character set of export file (NLS_LANG)打开expdat.dmp文件查看就知道它重新创建了表,也就是说表空间是指定了的
    如果实在要改变表空间的话,可以用ultraedit之类的支持正则表达式的工具直接对expdat.dmp文件进行修改后再导入。
      

  2.   

    正常情况基本是没有办法的
    有个“绝好”的办法
    用二进制编辑器打开dmp文件,把表空间改成你需要的就行了
      

  3.   

    将Table的script到出来,imp前将Table建到你需要的tablespace,然后用IGNORE=yes导入就可以了
      

  4.   

    可以先到如,然后用 
     ALTER  TABLE  TALBENAME MOVE TALBESPACE   目标表空间名称 ;
      

  5.   

    把你想要导入的那个表空间设为你导入数据的那个用户的默认(default)表空间,如果该用户还有其他的表空间,把其他的表空间offline,然后导入。
      

  6.   

    谢谢各位!
    特别谢谢sywolf(老狼) ,我采用你的方法 :)
      

  7.   

    先建每一个要imp的空表(指定表空间),然后用imp(IGNORE=Y )导入
      

  8.   

    imp导入的表进入那个表空间:dmp文件中,每个表都有自己的表空间
     imp时,系统会自动搜寻,如果找到同名的表空间,则将该表放进对应的地方 没找到时才放进用户的缺省表空间