场景:项目开发完之后要部署在不同的环境进行测试,这时候就需要将数据库中的表结构,序号,数据进行迁移,这时候就需要能够熟练的使用plsql。
问题:
- 导出的表结构,在另一个数据库中无法导入
- 部分表的数据过大,导致长时间无响应,其实数据仍然在迁移,这个时候就需要找出关键的数据表,对于不需要的数据直接丢弃即可
1 导出表和序列结构
1.1 实践方法
1.2 其它总结
导出步骤:
1 tools ->export user object 选择选项,导出.sql文件
2 tools ->export tables-> Oracle Export 选择选项导出.dmp文件
导入之前先把原来用户下的Tables,Sequences都右键Drop掉,再禁用所有约束即Constraintes下右键Disable(看解释2)
导入步骤:
1 tools->import tables->SQL Inserts 导入.sql文件
2 tools->import talbes->Oracle Import然后再导入dmp文件
数据库的导入导出成功
=======================解释1=============================
Tools->Export User Objects导出的是建表语句(包括存储结构)
Tools->Export Tables里面包含三种导出方式:
三种方式都能导出表结构以及数据,网上说三种方法有区别,如下:
Oracle Export,Sql Insert,pl/sql developer
第一种是导出为.dmp的文件格式,.dmp文件是二进制的,可以跨平台,还能包含权限,效率也很不错,用得最广
第二种是导出为.sql文件的,可用文本编辑器查看,通用性比较好,但效率不如第一种,适合小数据量导入导出。尤其注意的是表中不能有大字段(blob,clob,long),如果有,会提示不能导出(提示如下:
table contains one or more LONG columns cannot export in sql format,user Pl/sql developer format instead),可以用第一种和第三种方式导出。 第三种是导出为.pde格式的,.pde为Pl/sql developer自有的文件格式,只能用Pl/sql developer自己导入导出;不能用编辑器查看。
2 操作细节
在导出数据时候排除大文件数据表,查看所有表大小
select segment_name, bytes from user_segments where segment_type = 'TABLE' order by bytes desc;
这里可以在导出数据时候去除不需要导出的数据,这样操作起来就会快很多
这样,就可以在导出数据时候,剔除掉大文件的数据表