如何导入导出大数据量(1000万条)的表(如t_employee)+++++++++++++++++++++++
步骤:
1、从数据库1中导出数据
2、使用delete删除数据2中相同表的所有数据。
3、导入。
思考:以上步骤对吗?
分析:错误有2。
1、不应该使用delete删除大量数据。
2、在数据导入时,数据库系统将会同时维护索引。所以效率会很低。
正确的做法是:
1、从数据库1中导出
2、删除数据库2中对应表中的所有索引对象
3、使用truncate命令清除该表的所有数据
4、导入(此时数据库不会再维护索引,效率最高)
5、重建相关索引(使用脚本)
注意:此项操作带有一定的技巧,可作为工作经验在面试时使用。
1、清空数据库的表:
delete 删除的话,要写日志和维护索引,删除工作量大,而且数据所占空间并未释放!(高手可以日志恢复)
truncate 直接从磁盘上清除数据,不写日志,不维护索引,所以快!
步骤:删除索引,避免索引维护;truncate避免日志(禁止触发器)
2、导入数据
最快 oracle derict path
一般用imp导入,导入以后要重建索引(没有索引,导入时,不需要维护索引,效率很高)。
演示:Oracle常见数据导入导出
两种格式:二进制格式(在系统上线后常用)
脚本格式(开发中常用)
1、利用Oracle的exp和imp导出数据
导出:exp 用户名/密码@[连接名] file=xxx
导入:imp 用户名/密码@[连接名] file=xxx
2、利用PL/SQL导出
导出:先导出所有对象的创建脚本1
再导出所有表格数据脚本2
导入:在命令窗口中先执行脚本1,再执行脚本2
说明:在导入以后,通常都有些对象(如触发器)都需要重新编译(可用代码编译,也可以手工编译)