쉘 (Ksh)에서 실행중인 BTEQ 스크립트가 있습니다. 목표은으로, 은 .csv 파일로 Teradata 테이블의 내용을 내 보냅니다. 문제 데이터를 내보내는 동안 열 사이에 너무 많은 공백이 삽입되었습니다. 시도했습니다
1. 개별 열 자르기
2. 캐스팅을 사용하여 Char의 각 열 데이터 유형을
으로 변환하지만이 중 아무 것도 도움이되지 않습니다.
BTEQ 코드는 다음과 같이 (I 파일 헤더를 필요로하기 때문에 나는이 보고서 파일을 사용하고 있습니다. 보이는Teradata BTEQ 파일에서 데이터를 내보내는 동안 공백이 들어옴
.EXPORT REPORT FILE = exportfilepath.csv;
.SET SEPARATOR ",";
.SET TITLEDASHES OFF;
.set RECORDMODE OFF;
.set width 65531;
.SET ERRORLEVEL 3807 SEVERITY 0
select
trim('"' || trim(cast(col1 as char(256))) || '"') AS col1,
trim('"' || trim(cast(col2 as char(256))) || '"') AS col2,
trim(cast(col3 as INTEGER)) AS col3,
trim(cast(col4 as char(6))) AS col4,
trim(col5) AS col5,
trim(cast(col6 as decimal(18,2)) AS col6,
trim(date) AS date
from table A;
COL1과 Col2의이 them.Any 도움말 사이의 공백을 많이 가지고있다 로 내가 그 공백을 제거하는 방법에 .이 경우 다른 작업을 수행 할 수 있습니까? 이러한 문자는 크기가 다양하므로 이름을 줄일 수 없습니다.
col1과 col2는 쉼표로 구분 된 이름이기 때문에 여기에 '' '를 추가했습니다. .csv 파일 형식이 적절하지 않은 표현이 필요합니다.
질문에 샘플 데이터를 포함하십시오. – zarruq
테스트하지 않았거나, 아마도 이것을 시도해보십시오 :'.SET SEPARATOR "#"를 선택하십시오. 분리기 주위의 모든 공백을 제거하십시오. 모든 큰 따옴표를 두 개로 바꾸십시오 (CSV 형식으로 이스케이프 처리). 모든 필드 주위에 큰 따옴표를 넣으십시오 (행의 시작, 행의 끝 및 구분 기호의 양쪽에). 그리고 sep를 원하는 것으로 바꾸십시오. 'sed 's/"/" "/ g; s /^.*$/"&"/; s/* # */","/ g "와 같은 것입니다. –