我正在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以避免空间问题。
答案 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
/