Oracle - выходные данные поступают не в нужном формате

StackOverflow https://stackoverflow.com/questions/1207506

  •  05-07-2019
  •  | 
  •  

Вопрос

Я установил приведенные ниже параметры в sqlplus для отображения моего представления в окне put on unix, однако он отображает разрыв в одну строку между двумя записями.Я не хочу, чтобы этот разрыв в одну строку между двумя записями, например-

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 переносит ваши строки, он помещает туда дополнительное пространство, чтобы вы знали, где заканчивается одна перенесенная строка, а начинается другая.

Либо измените размер строки на значение, превышающее 125 (лично я всегда устанавливаю размер строки в 5000 в своих сценариях - я могу сделать свою собственную упаковку, спасибо, sqlplus), либо выполните результаты через sed, чтобы удалить пробелы:

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

Другие советы

Возможно, у вас включено разделение записей:

SET RECSEP EACH

Попробуй:

SET RECSEP OFF
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top