在用命令IMP倒入数据时怎样指定表空间

在用命令IMP倒入数据时怎样指定表空间,第1张

 imp导入数据指定表空间,大致有以下几种方法可以:

1. 有一个简单的方法,适用于数据比较少的情况:直接使用UltraEdit打方DMP文件,默认是16进制,切换成文本模式,将里面的:TABLESPACE "TS1"全部替换成TABLESPACE "TS2",然后再导入,不用加什么tablespaces=TS2之类的参数即可,当然加了也无所所谓。

C:\>IMP USER2/USER2 log=C:\plsimp.log file=D:\database\USER1.dmp fromuser=USER1 touser=USER2 ignore=yes tablespaces=TS2

不过有个缺点,如果DMP文件有几百M甚至几G,嘿嘿嘿嘿,不知道UltraEdit有啥反应?

2. 还有另外一种比较好的方法。基本思路都是先从 USER1导出表结构(DMP或者SQL脚本),然后在USER2用户下创建空的数据库表(如果是DMP,则参见方法1;如果是SQL脚本,则稍作修改后以USER2用户执行即可),再将包括数据的DMP导入,注意要设IGNORE=Y,并指定FROMUSER和TOUSER。具体实现方法为:

(1)先用工具导出USER1的表结构(不要导出CHECK和FK,特别是FK!),TOAD和 PL/SQL都有此功能。PL/SQL Developer导出表结构:Tools-->Export User Objects(导出用户对象) -->选择要导出的表(包括Sequence等)-->.sql文件,导出的都为sql文件。或者使用imp的indexfile选项生成表结构的SQL脚本。

(2)在USER2用户下创建相同的表结构

(3)导入完整的数据

PS:

PL/SQL Developer工具 *** 作步骤:

(1)导出表结构:

Tools-->Export User Objects(导出用户对象) -->选择要导出的表(包括Sequence等)-->.sql文件,导出的都为sql文件

(这一步也可以导出一个只包括表结构的DMP文件。)

(2)导出表数据:

Tools-->Export Tables-->选择表,选择SQL Inserts-->.sql文件

(这一步也可以导出一个包括表结构和数据或者只有数据没有表结构图的DMP文件。)

(3)导入表结构:

执行刚刚导出的sql文件,记住要删掉table前的用户名,比如以前这表名为sys.tablename,必须删除sys

(如果是只包括表结构的DMP文件,则使用UltraEdit修改表空间,再导入。如方法1)

(4)导入表数据:

执行刚刚导出的sql文件

(如果是DMP文件,则直接导入即可,注意要设IGNORE=Y,并指定FROMUSER和TOUSER。)

IMP命令 *** 作步骤:

首先:exp user/pw file=file.dmp owner=yourUser1

然后:imp user/pw file=file.dmp indexfile=xxxx.sql fromuser=yourUser1 touser=yourUser2

随后:修改xxxx.sql中的关于有表空间设置的地方为新的表空间,并去掉相关的注释(rem),然后执行xxxx.sql创建相关对象。

最后:imp user/pw file=file.dmp fromuser=yourUser1 touser=yourUser2 ignore=y

在ArcCatalog中建立指定表空间的数据库连接(要以指定表空间的用户登录),然后在arccatlog中定位到数据源,选中并拷贝图层,再定位到数据库连接,最好用右键菜单粘贴就行了。如果往指定表空间的中的已有图层添加数据,在该图层上用右键菜单Load命令。

当然有办法了,大森林来帮你:

方法其实很简单,如下:

1、先不要授予你这个新的aaa这个用户太高的权限,比如dba的角色及quota unlimited tablespace这个系统权限。

2、只授予aaa在aaa表空间的unlimited权限,在user表空间没使用权限

sqlalter user aaa quota unlimited on aaa

3、在你做imp时指ignore=y选项就可以了,这样imp进来的表就使用aaa的默认表空间了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10816138.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-11
下一篇2023-05-11

发表评论

登录后才能评论

评论列表(0条)

    保存