2017-01-26 9 views
0

Unixシェルスクリプトを使用してクエリ出力を.txtファイルに書きたいだけです。Oracle - Unixクエリ

SET PAGESIZE 20000 
SET COLSEP "," 
SET LINESIZE 385 
SET NUMWIDTH 300 
SET WRAP OFF 
SET FEEDBACK OFF 
SET UNDERLINE OFF 
SET ECHO OFF 
SET TRIMSPOOL OFF 
SET TAB OFF 

COLUMN NSC Format a8 
COLUMN STATUS Format a6 
COLUMN GEO_CD Format a6 
COLUMN COUNTRY Format a7 
COLUMN LATA Format a4 
COLUMN COMMUNITY_NAME a14 
COLUMN COUNTY a6 
COLUMN STREET_NUM1 a11 
COLUMN POSTAL_CD a9 

SPOOL NRM1.txt 

SELECT GEO_SITE_CD||GEOP_SITE_CD||NW_SITE_CD NSC,STUS_CD STATUS,GEOP_SITE_CD GEO_CD,CTRY_CD COUNTRY,GEO_LATA_CD LATA,NVL(CURR_GEO_SITE_NME,GEO_SITE_NME) COMMUNITY_NAME, 
CNTY_NME COUNTY,'"'||RPAD(NVL(TRIM(ADR_STREET_NBR),'    '),15,' ')||'"' STREET_NUM1, 
PSTL_CD POSTAL_CD 
FROM CLONE_NW_SITE 
WHERE CTRY_CD IN ('USA','PRI','VRI') 
AND ROWNUM < 100 
ORDER BY NSC; 

SPOOL OFF 

出力は以下になります:

NSC  ,STATUS,GEO_CD,COUNTRY,LATA,COMMUNITY_NAME            ,COUNTY          ,STREET_NUM1             ,POSTAL_CD      
ABITPR01,A  ,PR ,PRI , ,AIBONITO (AIBONITO)           ,AIBONITO          ,"    "            ,00705    

必要な出力は以下になります。以下は、私のコードですSTREET_NUM1について

NSC  ,STATUS,GEO_CD,COUNTRY,LATA,COMMUNITY_NAME            ,COUNTY          ,STREET_NUM1,POSTAL_CD      
ABITPR01,A  ,PR ,PRI , ,AIBONITO (AIBONITO)           ,AIBONITO          ,"    ",00705    

- 私はRPAD/NVLを使用し、それはヘッダサイズを変更し、値の後ろには余分なスペースが45個あります。私はそれらを望んでいない。

ご提案は大歓迎です。前もって感謝します。

+2

この質問のコードは、UNIXシェルスクリプトではありません。この質問がUNIXで何をしなければならないかは、私には分かりません。 –

+0

これはOracle/sqlplusのどのバージョンですか? – BobC

答えて

0

ADR_STREET_NBRに値が既に存在するように見えますが、この長さがこの問題の原因です。 RPADの後にSUBSTR関数を使用すると、問題が解決するはずです。

NVLでは、' 'の代わりに''を使用します。 RPADは、価値がないときにパディングスペースを処理します。