Oracle 提供了两个工具,imp.exe 和 exp.exe,分别用于数据的导入和导出。这两个工具通常位于Oracle_home/bin目录下。
首先,我们来了解如何导出数据。例如,要将名为ATSTestDB的数据库完全导出,用户名为system,密码为123456,并将导出的数据保存到c:/export.dmp文件中,可以使用以下命令:
exp system/123456@ATSTestDB file=c:/export.dmp full=y
如果你想导出system用户和sys用户的所有相关资源,可以使用以下命令:
exp system/123456@ATSTestDB file= c:/export.dmp owner=(system,sys)
如果你想导出特定的表,例如sys.table1和owbsys.table2,可以使用以下命令:
exp system/123456@ATSTestDB file= c:/export.dmp tables=( sys.table1, owbsys.table2)
如果想要导出特定字段的数据,比如表table1中字段Title以"GangGe"开头的数据,可以使用以下命令:
exp system/123456@ATSTestDB file= c:/export.dmp tables=(table1) query=/" where Title like 'GangGe%'/"
对于导出的数据,如果文件较大,可以使用第三方工具进行二次压缩,如winzip, winrar, 7zip等。同时,exp工具也支持直接压缩数据,只需在命令后加上compress=y即可。
接下来,我们来看看如何导入数据。例如,要将c:/export.dmp文件中的数据导入到名为ATSTestDB的数据库中,可以使用以下命令:
imp system/123456@ATSTestDB file=c:/export.dmp
如果在导入过程中遇到错误,可能是因为以下几个原因:
A. 导入的对象(表、视图、方法等)不属于当前连接的用户。
B. 导入的对象在数据库中已经存在。
C. 导入的对象的原始所有者不在该数据库中。
可以使用以下命令将所有对象导入到指定账户下:
Imp system/123456@ATSTestDB file=c:/export.dmp fromuser=sys touser=system
其中fromuser=sys为.dmp文件中的对象的原始所有者,touser=system为导入后的所有者。
如果希望忽略或插入数据,可以使用以下命令:
Imp system/123456@ATSTestDB file=c:/export.dmp ignore=y
有时候,导入时不需要导入约束(如外键约束),可以使用以下命令:
imp system/123456@ATSTestDB file=C:/export.dmp tables=(table1,table2) constraints=N
同样,如果不想导入索引(如唯一性索引),可以使用以下命令:
imp system/123456@ATSTestDB file=C:/export.dmp tables=(table1,table2) indexs=N
如果只想导入表的结构而不导入数据,可以使用以下命令:
imp system/123456@ATSTestDB file=C:/export.dmp tables=(table1,table2) rows=N
需要注意的是,操作者必须有足够的权限,且数据库必须是可以连接的。可以使用tnsping TEST来检查数据库TEST是否可以连接。
温馨提示:答案为网友推荐,仅供参考