2009-11-09 4 views
0

sqlplus 쿼리에서 csv 출력 파일의 형식을 지정해야합니다. char 및 varchar 출력 필드는 테이블의 최대 열 크기로 나옵니다. 이는 많은 열에 여분의 공백과 쉼표 분리 기호가 있음을 의미합니다. 내 CSV 파일에서 여분의 공백을 제거하려면 어떻게해야합니까? 또한 숫자 필드를 ""둘러 볼 수있는 방법은 무엇입니까?Unix 스크립트에서 실행되는 sqlplus의 csv 출력 형식

+0

여기에 무엇을 요구하고 있는지 확인하십시오. 그러나 좋은 시작은 몇 가지 샘플 입력 단편을 포함하는 것입니다. 텍스트 스트림에서 입력에서 출력으로가는 것은 일반적으로 흥미로운 sed 또는 awk 사용법을 의미합니다. 그러나 sqlplus가 생성하는 샘플과 출력에서 ​​원하는 것을 볼 필요가 있습니다. sed, awk 또는 perl에 대한 좋은 직장처럼 들립니다. –

답변

0

당신은/선도 트림 기능을 사용하여 후행 공백을 제거 할 수 :

http://www.adp-gmbh.ch/ora/sql/trim.html

SELECT TRIM(col) FROM table; 

회원님이 숫자 필드에 따옴표 점점 확실한 이유 : 당신이 방식과 아마 뭔가를 열을 함께 연결 하시겠습니까?

D.Shawley가 질문했듯이 여기에 CSV를 생성하는 데 사용하는 SQL 예제를 게시 할 수 있다면 도움이 될 것입니다.

2

필드를 함께 연결하고 따옴표를 직접 추가해야합니다. 또한 데이터에서 큰 따옴표를 이스케이프 처리하는 것을 잊지 마십시오. 데이터에 쉼표 나 큰 따옴표가 포함되어 있지 않은 한 큰 따옴표는 꼭 필요한 것은 아니지만이를 추가하는 것은 상처가되지 않습니다.

SELECT '"' || numcol || '",', 
     '"' || REPLACE(strcol0, '"', '""') || '",', 
     '"' || REPLACE(strcol1, '"', '""') || '"' 
    FROM some_table; 

실행하기 전에 제목과 피드백을 해제 한 다음 파일로 스풀링하고 싶을 것입니다.

SQL> set heading off 
SQL> set feedback off 
SQL> set pagesize 0 
SQL> spool output.csv 
SQL> SELECT ... FROM ...; 
SQL> spool off