2017-05-03 38 views
0

我使用shell腳本來執行在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