2012-03-14 3 views
2

bash에서 SQL * Plus를 실행하는 데 문제가 있습니다. 는 여기에 내가, 우리의 인트라넷에서 삽입 문을 다운로드 SQL * Plus를 통해 SQL 파일에 넣어 실행 내 코드bash로 SQL * Plus를 실행하면 인코딩이 잘못됨

#!/bin/bash 

curl http://192.168.168.165:8080/api_test/xsql/f_exp_order_1016.xsql > script.sql 
sqlplus /nolog << ENDL 
connect user/password 
set sqlblanklines on 
start script.sql 
exit 
<<ENDL 

입니다. 이것은 잘 작동합니다. 문제는 script.sql 인코딩 파일이 application/x-empty; charset=binary (파일 -bi를 통해 확인)처럼 보일뿐입니다. 그래서 그것은 내 DB에 잘못된 문자를 삽입하는 것입니다. 이것은 정말로 원하지 않는 것입니다.

그래서 당신은 내가 데이터 손실 withou 파일 인코딩을 변경? 또한 내 스크립트에 관한 조언은 환영, 나는 또한

내가 :-) 리눅스 스크립트 총 안돼서 어떻게 말씀 해주십시오 수 iconv으로 변경 인코딩을 시도했지만 도움이되지 않았습니다.

UPDATE

내가하지만 파일을 삭제 한 이유를 알고 다시 몇 번 및 인코딩을 스크립트를 실행하지 않는 갑자기 UTF-8이지만 'didn를 수 있도록 문자는 여전히 두 파일 및 DB 끊어지는 아무것도 해결하지 마십시오

+0

을 실행하기 전에이 줄을 넣고 있었어요? – bos

+0

죄송합니다. 여기에 붙여 넣는 것을 잊어 버렸습니다. 업데이트 –

답변

1

오케이, 파일에 문제가 없었습니다 (인코딩은 UTF-8이어야 함)하지만 Oracle NLS_LANG 환경 변수 설정에 있습니다. 당신은 여기-문서 (<< ENDL)에 대한 종료 태그가없는 이유 그래서 솔루션은 SQL의 * 플러스 스크립트가 전체 스크립트의 경우

NLS_LANG="CZECH_CZECH REPUBLIC.UTF8" export NLS_LANG

0

curl 명령에서 --data-ascii 스위치를 사용해보십시오.

+0

보기 아니, 그것은 나를 위해 작동하지 않았다, 문자는 여전히 고장 났어요. 하지만 조언 주셔서 감사합니다. –

관련 문제