2017-05-03 12 views
0

私はsqlplusをでエクスポートを実行するためのシェルスクリプトを使用していますたSQLPlus - エクスポートおよびスプール結果

スプール:

SET echo off 
SET linesize 32767 
SET LONG 1000 
SET LONGCHUNKSIZE 1000 
SET wrap off 
SET heading off 
SET colsep ';' 
SET pagesize 0 
SET feed off 
SET termout off 
SET trimspool off 

SELECT 
AUTO_SEQ.nextval as ROW_ID, 
.. 
.. 

そして結果:

29419987;FOR_IMPORT;1000   ;KR 19 F 65 73                                          ;KR 19 F 65 73, 47001, 47000                                                       ;SANTA MARTA                                                                                        ;Cargado por EIM en 03-MAY-17   ;KR 19 F 65 73, 47001, 47000                        ;KR 19 F 65 73, 47001, 47000                        ;KR 19 F 65 73, 47001, 47000                        ;MAGDALENA                                                                                        ;   ;COLOMBIA;               ;               ;                       ; ;   ;Y;N;Y 

結果が前に多くの空白がありますおよび/またはデータの後、私の質問はどのようにそれらを削除することができますか?

ありがとうございます。

答えて

0

設定colsepは、結果が列に出力されないようにします。つまり、各行の値は同じ長さにパディングされます。私はcolsepを忘れて、代わりに区切り文字と一緒に値を連結したい:余分なスペースを追加しないと、単一列式を与える

SELECT 
    AUTO_SEQ.nextval 
    ||';'|| column1 
    ||';'|| column2 
    ... 
    ||';'|| columnN 
FROM 
    ... 

を、。 (つまり、これを消費する人に少しもよるが)

あなた彼らは区切り文字自体が含まれていることができれば、文字列値sin二重引用符を囲む必要があるかもしれない、とあなたは同様のものを連結することができます。日付を文字列などで明示的にフォーマットする必要があります。

1

ただ、自分でSQL Plusの現在のバージョンをつかむと、あなたが

SQL> set markup csv on 
SQL> select * from scott.emp; 

"EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO" 
7369,"SMITH","CLERK",7902,"17-DEC-80",800,,20 
7499,"ALLEN","SALESMAN",7698,"20-FEB-81",1600,300,30 
7521,"WARD","SALESMAN",7698,"22-FEB-81",1250,500,30 
7566,"JONES","MANAGER",7839,"02-APR-81",2975,,20 
7654,"MARTIN","SALESMAN",7698,"28-SEP-81",1250,1400,30 
7698,"BLAKE","MANAGER",7839,"01-MAY-81",2850,,30 
7782,"CLARK","MANAGER",7839,"09-JUN-81",2450,,10 
7788,"SCOTT","ANALYST",7566,"09-DEC-82",3000,,20 
7839,"KING","PRESIDENT",,"17-NOV-81",5000,,10 
7844,"TURNER","SALESMAN",7698,"08-SEP-81",1500,,30 
7876,"ADAMS","CLERK",7788,"12-JAN-83",1100,,20 
7900,"JAMES","CLERK",7698,"03-DEC-81",950,,30 
7902,"FORD","ANALYST",7566,"03-DEC-81",3000,,20 
7934,"MILLER","CLERK",7782,"23-JAN-82",1300,,10 
を行ってもいいでしょう
関連する問題