2013-07-19 35 views
2

我用sqlplus输出表的内容值对:输出键,用sqlplus

select * from my_table; 

输出与此类似:

ID 
------------- 
FIELD1 
---------------- 
FIELD2 
---------------- 
someid 
field 1 content 
field 2 content 

我试过页的多种组合格式化选项。我可以通过设置head,pages,termout,echo,feedlinesize来格式化表中的输出。

但我想输出的值在(键,值)的方式,像这样:

ID = someid 
FIELD1 = field 1 content 
FIELD2 = field 2 content 

分隔符和格式并不重要,只要我有每行一列。

是否有可能使用sqlplus?我想避免编写脚本。在这台特定的机器上(我不能安装任何设备),我只有bash,perl和Python 2.4。

回答

4

我不知道任何SQLPlus设置会让你这种格式,但可以通过蛮力做到这一点。像这样的东西应该工作:

SELECT 
    'ID = ' || id || CHR(10) || 
    'FIELD1 = ' || field1 || CHR(10) || 
    'FIELD2 = ' || field2 
FROM my_table 

附录 OP询问是否有可能使CHR(10)在sqlplus的COLSEP值。我最初认为“没有办法”,但偶然发现this StackOverflow answer关于如何将COLSEP设置为选项卡,并将其修改为CHR(10)。我不太明白如何/为什么它的工作原理,但它确实有效:

col NEWLINE# new_value NEWLINE NOPRINT 
select chr(10) NEWLINE# from dual; 
set colsep "&NEWLINE" 
+0

很好,谢谢! CHR(10)'有'set colsep'设置的机会吗? – ixe013

+0

我不知道这一点,但事实证明它可以 - 请看我更新的答案。 –

+0

更好。有人给埃德一个应得的第二个upvote! – ixe013

相关问题