仅显示SQL * Plus中的实际列数据

问题描述:

我从SQL * Plus中后台打印分隔文本文件,但每个列都按其定义打印为完整大小,而不是实际在该行中的数据。仅显示SQL * Plus中的实际列数据

例如,定义为10个字符且行值为“test”的列将作为“test”而非“test”打印出来。我可以通过选择列和LENGTH函数的值来确认这一点。它打印“test | 4”。

如果它迫使我变成固定宽度,它会破坏分隔符的用途。是否有一个SET选项可以解决这个问题,或者其他一些方法使它只打印实际的列数据。

我不想将TRIM添加到每一列,因为如果一个值实际上是存储空间我希望能够保留它们。

感谢

+0

也见http://*.com/a/14141967/124416 – w00t 2013-01-03 15:32:52

我见过很多SQL * Plus脚本,用于创建文本文件是这样的:

select A || ';' || B || ';' || C || ';' || D 
from T 
where ... 

这是一个强烈的信号,我认为你不能只是切换到具有可变长度的输出a SET命令。

而不是';'你当然可以使用任何其他分隔符。这取决于您的查询是否正确地转义任何可能与分隔符或换行符混淆的字符。

+1

是的,我很害怕这个。我们可能最终会在所有列上使用TRIM,并希望我们从来没有被要求研究如何共用尾随空格。 对我来说,他们会提供内置的分隔输出,而没有关闭固定宽度的能力,这似乎很奇怪。你为什么要这两个? – brydgesk 2010-12-20 17:23:02

一般来说,我会忘记SQL Plus是将CSV从Oracle中取出的一种方法。

汤姆凯特写了一个可爱的小临-C unloader

个人而言,我已经写了一个工具,它确实相似,但在Perl