我有一个简单的sql脚本文件,它只包含一个SELECT语句。但SELECT语句的输出很大(超过几十万行)。
我无法将输出保存在本地文件中。我只是将我的select语句更改为DESC并且它运行正常,所以问题似乎是输出的大小(select语句类似于来自TABLEX的SELECT *)
对于如何执行select语句,我将不胜感激。
提前致谢
我更新了我的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查询,它在不到一秒的时间内得到结果!
有什么建议吗?
由于
答案 0 :(得分:1)
我们使用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连接被防火墙破坏了。如果您的查询运行了几个小时,您应该查看这些问题。
答案 1 :(得分:0)
这与性能或SQL * Plus限制无关。 它只是在执行命令结束时缺少分号:
select * from JM_WCEL_BTH_CURRENT;
^
|____________add semicolon here