导出较大规模的数据成 xls 文档的方法

数据库: Oracle

需求: 把一张表的数据导出成 Excel 的 xls 格式的文档

工具: PL/SQL Developer

问题: 数据量太大 (> 450000), 无法一次保存到 Excel 文档中

解决方法: 分页查询, 每次查询65535条(Excel 的一个 sheet 可以显示的最大记录数), 手工保存到一个 sheet, 如此7次就解决问题了.

帮助: 手工保存查询结果为 xls 文档的方法. 鼠标滑到 PL/SQL Developer 查询结果集显示区域右键单击, Export Results -> CSV file, 再用 Excel 打开保存的 CSV 文件, 把内容复制到 xls 文档的一个 sheet 中就好了.

分页查询语句:

-- 注意查询语句中加粗的部分.

--08-13-1

SELECT *

FROM (SELECT A. *, ROWNUM RN

FROM (select * from wy_08_13) A

WHERE ROWNUM <= 65535 * 1)

WHERE RN > 65535 * 0

--08-13-2

SELECT *

FROM (SELECT A. *, ROWNUM RN

FROM (select * from wy_08_13) A

WHERE ROWNUM <= 65535 * 2)

WHERE RN > 65535 * 1

--08-13-3

SELECT *

FROM (SELECT A. *, ROWNUM RN

FROM (select * from wy_08_13) A

WHERE ROWNUM <= 65535 * 3)

WHERE RN > 65535 * 2

... ... ... ...

--08-13-7

SELECT *

FROM (SELECT A.*, ROWNUM RN

FROM (SELECT * FROM WY_08_13) A

WHERE ROWNUM <= 65535 * 7)

WHERE RN > 65535 * 6

: 分页查询通过手工的方式一步一步来, 确实笨拙, 但所幸次数不过十, 若数据量再大, 当通过程序自动输出成目标 xls 文档, 这个假象的需求可在未来需要的时候去解决. 以上查询不足之处是未采用存储过程(还不会写). ——如果不用存储过程,可以考虑用 JDBC 完成。