0
我的腳本正在將某些查詢的輸出後臺處理爲文本文件。SQLPlus尾隨空白問題
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)。每行需要固定長度,因爲該文件將被髮送到外部服務器,並且將基於假定它是固定長度進行分析。
有沒有辦法避免修剪我明確輸出的空白?
太好了,謝謝!我不知道你可以像這樣在整個過程中使用set。有一種情況不適用於我:'SELECT CASE when field1 = 1 THEN rpad(field2,50)ELSE rpad(field3,200)END END FROM table1'。你知道是否有可能爲該查詢獲得某些功能,以便行數爲50或200個字符,而不是總是200? – DiscoInfiltrator
我不知道有什麼辦法來改變從一個記錄到下一個記錄的寬度。基本問題是'SELECT'是一個Oracle命令,'SET LINESIZE'是SQL * Plus命令。當「SELECT」正在「Oracle世界」中進行時,您無法接觸到「SQL * Plus」世界來切換線路大小。如果你不能使用修剪過的行或一組長度爲100,然後是一組長度爲200的文件,那麼你需要一種新的方法,比如之後對文件進行調整,或者編寫一個使用'UTL_File'的存儲過程庫,或C/Java/C#/ PHP /任何程序將查詢和寫入。 –
是的,這就是我的想法。沒有問題。 – DiscoInfiltrator