如何更正BAT文件中的选择假脱机

时间:2018-08-17 22:06:01

标签: sql batch-file cmd oracle11g sqlplus

我正在Windows服务器中写入一个BAT文件,该文件将连接到oracle,并且select输出将被后台处理到一个文件中,并且输出文件将被放置到网络驱动器中。

我已通过以下步骤完成此操作:
1)创建一个bat文件以连接到oracle并执行该文件。

sqlplus UserName/Password@Hostname:1555/Service_Name @SQL_Script_to_execute
copy generated_File_with_path network_location

2)将选择查询放入SQL脚本中。

spool "path_to_the_saved_file";
set define off;
set heading off;
set linesize 30000;
select column_A||ColumnB|| columnC  from table;
spool off;
exit;

我能够在输出文件中提取查询结果,但是格式非常不正确。

在上一列的末尾和空白行之后,我得到了很多额外的空间。

如何在最后一列之后和空白行之间删除这些多余的空格?

  

PS:到目前为止,我已经按照以下步骤进行操作

     
      
  • 在SQL脚本中删除了行大小,因此可以避免最后一列之后的多余空格,但会使输出文件更糟。   表格行不在一行中。
  •   
  • 添加了设置页面大小50000的设置,它的确解决了该问题,但是仍然没有空白行   文件,因为表中的总行数约为70000。      
        
    • 我已经在使用查询作为select colA || B列||从表colC以避免空间问题。
    •   
  •   

3 个答案:

答案 0 :(得分:2)

  

上一栏结束后我得到了很多额外的空间,很少   空白行。

     

如何删除最后一列之后的多余空格   在空白行之间?

一种简单的方法是在最后一列之后RTRIM个空格,如下所示。我只是将您的查询嵌入外部查询中,并删除了空格。

SELECT
    rtrim(col1)
FROM 
( SELECT
    column_a
    || columnb
    || columnc col1
FROM TABLE );

答案 1 :(得分:1)

似乎该代码正在串联三(3)个字段。如果字段中有空格,则可以对其进行修剪。

select TRIM(column_A) || TRIM(ColumnB) || TRIM(columnC) from table;

如果所有三(3)个字段中都没有内容,则将产生空白行。

答案 2 :(得分:-1)

在sqlplus中如下使用它:

SET PAGES 0 TRIMSPOOL ON FEEDBACK OFF ECHO OFF TERMOUT OFF SERVEROUTPUT OFF VERIFY OFF
spool .\filename.txt
select column_A||ColumnB|| columnC  from table;
spool off
/