IT Notes‎ > ‎Database‎ > ‎Oracle‎ > ‎

导出较大规模的数据成 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 完成。
Comments