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

时间:2010-12-20 16:19:29

标签: oracle sqlplus

我正在从SQL * Plus中删除分隔的文本文件,但每列都按其定义打印为完整大小,而不是该行中实际存在的数据。

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

如果它强制我进入固定宽度,它会破坏分隔符的目的。是否有一个SET选项可以修复此问题,或者使用其他方法使其仅打印实际的列数据。

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

由于

2 个答案:

答案 0 :(得分:2)

我见过许多SQL * plus脚本,它们创建如下文本文件:

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

我强烈要求您不能使用 SET 命令切换到可变长度输出。

而不是&#39 ;;'你当然可以使用任何其他分隔符。并且由您的查询来正确地转义任何可能与分隔符或换行符混淆的字符。

答案 1 :(得分:0)

通常,我会忘记SQL Plus作为将CSV从Oracle中删除的方法。

Tom Kyte写了一篇不错的小Pro-C unloader

就个人而言,我已经编写了一个实用程序,它在perl中的功能相似