質問

Unixボックスに表示されるビューを表示するためにsqlplusで以下のパラメーターを設定しましたが、2つのレコード間に1行のギャップが表示されています。

set feedback off
SET NEWPAGE NONE
set HEADING Off
set pagesize 0
set linesize 125
SET TRIMSPOOL ON
set termout off
spool /export/home/43276826/Rep_Tran_oracle_$DATE_FILE.txt
select RecordID||','||C_S||','||P_R||','||AccountingDate||','||SettlementDate||','||Sec
Description||','||ISIN||','||MessageRef||','||Amount||','||Department||','||AssignedTo||','||LastUpdate||','||CashAmount||','
||CashAmountUSD||','||LastNoteText||','||LastNoteUser||','||CashCurrency||','||BIMASNumber||','||RelatedReference||','||Sende
rToRec||','||OpType||','||OriginalISIN from HSBC_ALL_OI_T;

201280,C,R,21.4.2009,21.4.2009,"HSBC HLDG","GB0005405286","00001/20090421-1006851",188.00
0000,"TITBB/F"," ",22.4.2009,0.00,,"NOTHING GENEVA","ADK"," ","GB411161","SF-0357690","  ","FR"," "

"201279,C,P,21.4.2009,21.4.2009,"HSBC HLDG","GB0005405286","00001/20090421-1401548",188.00
0000,"TITBB/F"," ",22.4.2009,0.00,,"NOTHING GENEVA","ADK"," ","GB411161","SF-0357689","  ","FD"," "

there is a gap of one line between two records,I don't want that one line gap.I want output in the below format:

201280,C,R,21.4.2009,21.4.2009,"HSBC HLDG","GB0005405286","00001/20090421-1006851",188.00
0000,"TITBB/F"," ",22.4.2009,0.00,,"NOTHING GENEVA","ADK"," ","GB411161","SF-0357690","  ","FR"," "
"201279,C,P,21.4.2009,21.4.2009,"HSBC HLDG","GB0005405286","00001/20090421-1401548",188.00
0000,"TITBB/F"," ",22.4.2009,0.00,,"NOTHING GENEVA","ADK"," ","GB411161","SF-0357689","  ","FD"," "

上記の出力を達成するのを手伝ってください。

役に立ちましたか?

解決

問題は、行サイズが125に設定されていることですが、出力は187文字です(とにかく最初の行)。 sqlplusが行を折り返すと、そこに余分なスペースが追加され、折り返された1行の終わりともう1行の始まりがわかるようになります。

行サイズを125より大きい値に変更するか(個人的に、スクリプトで常にlinesizeを5000に設定します-独自の折り返し、ありがとう、sqlplusを実行できます)、またはsedで結果を実行して空白を削除します:

cat myResultFile.txt | sed '/^$/d' > newResultFile.txt

他のヒント

レコードの分離がオンになっている可能性があります:

SET RECSEP EACH

試してください:

SET RECSEP OFF
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top