0

私のスクリプトは、いくつかのクエリの出力をテキスト ファイルにスプールしています。

set linesize 200
set trimspool on
....

spool "C:\someFile.txt"
SELECT rpad(field1, 50)||rpad(field2, 50) FROM table1;
SELECT rpad(field3, 200) FROM table2;
spool off

私が望むのは、クエリ 1 のすべての行出力が末尾の空白を含めて 100 文字であり、クエリ 2 のすべての行出力が末尾の空白を含めて 200 文字であることです。

がオフの場合trimspool、すべての行に 200 文字が含まれますが、これは私が望むものではありません。オンの場合、field3 の長さがわずか 10 文字の場合、出力ファイルのその行の長さはわずか 60 文字です (100 文字にする必要があります)。ファイルは外部サーバーに送信され、固定長であるという前提に基づいて解析されるため、各行は固定長である必要があります。

明示的に出力した空白をトリミングしないようにする方法はありますか?

4

1 に答える 1

2

これはうまくいきます:

set trimspool off
spool "C:\someFile.txt"
set linesize 100
SELECT rpad(field1, 50)||rpad(field2, 50) FROM table1;
set linesize 200
SELECT rpad(field3, 200) FROM table2;
spool off

出力にはコマンド自体が含まれているため、それらを削除してクエリ結果のみを含めたい場合は、すべてのコマンドをスクリプト ファイルに入れ、スクリプト ファイルを実行するだけです。これらもスクリプトの先頭に追加します。

set echo off
set termout off
set pagesize 0
set feedback off
于 2013-03-28T15:00:38.733 に答える