0

我尝试从 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  

谢谢,萨维莎

4

1 回答 1

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... 等以使其看起来完全正确。

于 2012-11-15T11:24:37.237 回答