如何将linux的sql查询输出以适当的格式输出到文件中?

时间:2018-02-09 11:12:00

标签: sql oracle shell

enter image description here

我正在运行一个shell scipt,它连接到oracle并运行select查询并以上面的格式显示数据(附带截图)。我使用spool命令将此数据重定向到文件。如何在我的文件中以表格格式存储数据,例如带有标题的excel。

我尝试过以下选项,但效果不正常

set feedback off
set pages 0
set verify off
set pagesize 0 embedded on
SET COLSEP ","
SET LINESIZE 200
SET UNDERLINE =
set markup on
set termout off
BREAK ON ROW SKIP PAGE

3 个答案:

答案 0 :(得分:1)

我通常将其假脱机到一个.TXT扩展名的文件中。在MS Excel中,打开该文件时,文本导入向导会打开并询问如何执行此操作(哪一行是第一行,我使用的是哪个分隔符,......)并且所有内容都适合自己的列

如果将其保存为.CSV,Excel将打开它,但将所有内容放入列#34; A" (这是你不想要的)。

这是我的SET:

set termout off 
set trimspool on 
set echo off 
set verify off 
set autoprint off 
set serveroutput off 
set arraysize 1000 
set pagesize 0
set linesize 100
set long 10000
set numwidth 10
set feedback off
set colsep ';'

答案 1 :(得分:1)

如果您使用的是版本12.2,请执行

"compile 'org.sumitdemo:WebViewOverlayVCX:1.0.2'"

答案 2 :(得分:0)

你可以抓住SQLcl,这将运行所有正常的sqlplus东西,但已经添加了更多。

以下是您正在寻找的快速示例。

sql klrice/klrice

SQLcl: Release 18.1 Production on Wed Feb 07 17:28:32 2018

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

Last Successful login time: Wed Feb 07 2018 17:28:56 -05:00

Connected to:
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production


SQL> set feed off
SQL> set sqlformat csv
SQL> spool users.csv
SQL> select * from user_objects;
...rows.....
SQL> spool off