在UNIX中的假脱机SQL脚本中附加的额外空格

时间:2013-12-23 17:28:34

标签: sql oracle unix sqlplus spool

我正在尝试生成一个数据文件作为表的下载,这可能是固定格式。 我已经准备好了SQL。

示例:

SELECT RPAD(ORGANIZATION_ID,10)||RPAD(ORGANIZATION_NAME,100)||RPAD(EMPLOYEE_COUNT,100)
FROM MY_ORGANIZATION_STATE;

我在SQL Developer中运行它,并导出到Excel。 50个记录的样本。 能够正确获取,格式看起来没问题。

但是我需要自动化它,因此我们使用SQL * Plus的spool命令。 下面是一个片段。

set pagesize 100;
set linesize 10000;
set heading off;
spool orgn_output.dat;
@my_script # this has my SQL inside
spool off;

这样运行没有任何错误。

但是当我试图打开文件时,我可以看到,文件中有多余的空格,布局并不像我预期的那样!

当我手动运行SQL,并使用PUTTY假脱机时,它看起来像文件。为什么我的脚本会生成错误的脚本。我不知道为什么会这样。

非常感谢任何帮助!

编辑:输出:

100         Deva@Company@Sales          469
101         Deva@School                 234
102         Deva@Hospitals              245
103         Deva@Company@Finance        469

由于

2 个答案:

答案 0 :(得分:2)

实际上,我可以轻松地重新创建您的问题。当列文本较小时会发生这种情况。当我发出确切的文本大小时,布局是大小,我看到假脱机文本内的文本有空格而不是制表符。这种模式也不一致。我刚用可用的命令研究,我找到了。 SET TAB OFF;在sqlplus中解决了这个问题。

我希望,sqlplus本身正在将多个空间更改为TAB。设置TAB解决了它。!

请尝试该选项。让我知道祝你好运!

<强> P.S 即可。编辑你的问题,揭示了错误,可能是SO,在格式化时有效地转换了TAB:)

答案 1 :(得分:0)

实际上我对sqlplus有这种问题。在我修复它之后,我建议你尝试使用这种格式的sqlplus。

  1. SET TRIMSPOOL ON;
  2. SET TAB OFF;
  3. 由于错误,因为它是关于线轴问题。所以我们只是采用trimspool的格式。