我尝试从shell脚本生成excel表。这必须包含查询结果。
我确实得到了一张excel表。但是当我打开它时,列没有分开,而是查询输出的所有字段都出现在第一列中。
例如:
下面粘贴的是查询结果。当我直接将它粘贴到excel而不导出时,这些将被放置在excel的第一列。
在MS-Excel 2007中,我们将获得“粘贴选项”,我们可以在其中选择“使用文本导入向导”将字段分隔为excel中的列。
我需要通过shell脚本实现此功能。
你能帮我解决这个问题吗?
COL1 COL2 COL3
---------------------- ---- ----------------------
12 a 1
198 b 2
159 ast 3
434 rd 4
56 5
1031 6
谢谢, Savitha
答案 0 :(得分:0)
假设您可以生成.csv
文件,您的查询可以将字段与逗号(或者您喜欢的其他分隔符)连接在一起;类似的东西:
select col1 ||','|| col2 ||','|| col3
from my_table
where ...
如果任何列可能包含逗号,那么您可以用双引号将它们括起来,这样Excel就不会将一个值视为多个列:
select '"'|| col1 ||'","'|| col2 ||'","'|| col3 ||'"'
from my_table
where ...
从Oracle的角度来看,它会成为单个结果列,这意味着您的列标题不会显示为您想要的。假设你需要它们,你需要单独生成它们(在真正的查询之前):
select 'COL1,COL2,COL3' from dual;
或
prompt COL1,COL2,COL3
您可能还需要调整一些SQL * Plus设置,例如set embed on
,set linesize
,set pagesize
,set feedback off
...等,以使其看起来完全正确