我有一个简单的sql脚本文件,其中只包括一个SELECT语句。但是SELECT语句的输出是巨大的(超过几十万行)。
我无法将输出保存在本地文件中。我只是把我的选择语句改为DESC,它工作得很好,所以问题似乎是输出的大小(选择语句类似于select * from TABLEX)
如果您能告诉我如何执行select语句,我将非常感谢。
Thanks in advance
我更新了我的sql脚本文件如下
SET SQLBLANKLINES ON
set echo off
set feedback off
set linesize 1000
set pagesize 0
set sqlprompt ''
set trimspool on
set headsep off
spool output.csv
select * from JM_WCEL_BTH_CURRENT
SPOOL OFF
EXIT
输出在
下面D:>sqlplus user/user@mydb @2.sql
SQL*Plus: Release 10.2.0.4.0 - Production on Thu Jan 17 10:10:15 2013
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, Data Mining and Real Application Testing options
4
5
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64
bit Production
With the Partitioning, Data Mining and Real Application Testing options
D:>
输出文件中除了数字4和5没有其他内容。我在几分钟后通过按Ctrl + c结束了该进程。我还尝试删除假脱机进程,也没有输出到控制台。
我尝试从其他工具运行sql查询,它在不到一秒的时间内给出结果!
有什么建议吗?
谢谢
我们已经使用SQL*Plus成功地将6000万行假脱机到csv文件中,使用如下代码:
set echo off
set feedback off
set linesize 1000
set pagesize 0
set sqlprompt ''
set trimspool on
set headsep off
spool output.csv
select 'col1,col2,col3' from dual;
select col1 || ',' || col2 || ',' || col3
from bigtable;
spool off
长时间运行查询可能发生的一个问题是Oracle会话超时,或者TCP连接被防火墙破坏。如果你的查询运行了几个小时,你可能应该看看这些问题
这与性能或SQL*Plus限制无关。它只是在执行命令的末尾缺少分号:
select * from JM_WCEL_BTH_CURRENT;
^
|____________add semicolon here