其他分享
首页 > 其他分享> > spool技术的使用

spool技术的使用

作者:互联网

当我们在生产环境中,需要将表中的数据导出到文件中,如果数量比较大的时候,我们使用代码的方式会比较慢,尤其是使用mybatis的方式,及其的慢,即使使用jdbcTemplate的方式也会很慢。在一开始我使用的是mybatis的方式,这种方式,导出20000条数据大概耗时1分钟,照这样算下来,我们的数据库那张表,数据量达到了1500多万,也就是说,导完一共需要750分钟,也就是说,一共需要12个多小时,这显然是不行的。这个时候,我们可以使用Oracle的spool技术,来进行表数据的导出,使用这种方式,我亲自测试了一下,造了1500万条数据,耗时1723.717秒,最终导出的文件大小是:2414.823M,可见速度就非常快了。

学习记录:

--test.sql 脚本

set feedback off
set heading off
set verify off
set trimspool off
set trimout on
set longsize 1000
set pagesize 0
set newpage none
set trimout off
set termout off
spool d:\emp_yyy_20220627.dat
SELECT
EMPNO || '|+|' ||
ENAME || '|+|' ||
JOB || '|+|' ||
MGR || '|+|' ||
TO_CHAR(HIREDATE,'YYYY-MM-DD') || '|+|' ||
SAL || '|+|' ||
COMM || '|+|' ||
DEPTNO || '|+|'
FROM EMP;
spool off
exit

最终会在d盘下生成emp_yyy_20220627.dat数据文件,打开可见:

1|+|ZYQ|+|CLERK|+|7902|+|1980-12-18|+|801|+||+|20|+|
2|+|ZYQ|+|CLERK|+|7902|+|1980-12-17|+|800|+||+|20|+|
7369|+|SMITH|+|CLERK|+|7902|+|1980-12-17|+|800|+||+|20|+|
7499|+|ALLEN|+|SALESMAN|+|7698|+|1981-02-20|+|1600|+|300|+|30|+|
7521|+|WARD|+|SALESMAN|+|7698|+|1981-02-22|+|1250|+|500|+|30|+|
7566|+|JONES|+|MANAGER|+|7839|+|1981-04-02|+|2975|+||+|20|+|
7654|+|MARTIN|+|SALESMAN|+|7698|+|1981-09-28|+|1250|+|1400|+|30|+|
7698|+|BLAKE|+|MANAGER|+|7839|+|1981-05-01|+|2850|+||+|30|+|
7782|+|CLARK|+|MANAGER|+|7839|+|1981-06-09|+|2450|+||+|10|+|
7788|+|SCOTT|+|ANALYST|+|7566|+|1987-04-19|+|3000|+||+|20|+|
7839|+|KING|+|PRESIDENT|+||+|1981-11-17|+|5000|+||+|10|+|
7844|+|TURNER|+|SALESMAN|+|7698|+|1981-09-08|+|1500|+|0|+|30|+|
7876|+|ADAMS|+|CLERK|+|7788|+|1987-05-23|+|1100|+||+|20|+|
7900|+|JAMES|+|CLERK|+|7698|+|1981-12-03|+|950|+||+|30|+|
7902|+|FORD|+|ANALYST|+|7566|+|1981-12-03|+|3000|+||+|20|+|
7934|+|MILLER|+|CLERK|+|7782|+|1982-01-23|+|1300|+||+|10|+|

 

标签:12,20,1981,CLERK,30,技术,spool,使用,7698
来源: https://www.cnblogs.com/dongyaotou/p/16416545.html