2011-11-18 4 views
0
아래

는 내 Script.bat 파일의 내용이다 : 나는 로그온 아무 문제가 없다BTEQ를 사용하여 Teradata 쿼리를 실행하기위한 배치 (* .bat) 스크립트를 작성하는 방법은 무엇입니까?

@echo off 

cd C:\Program Files\Teradata\Client\13.0\bin 

bteq .LOGON server/username,password; 

select date; 

.LOGOFF 

@echo off goto end 

:end @echo exit 

하지만 그 BTEQ 내 쿼리 문을 읽을 수없는 것 같다

선택 날짜;

입력을 요구하는 메시지가 계속 표시됩니다. 누구든지 bteq를 쿼리 문을 읽고 실행하도록 유도 할 수 있습니까?

내가 입력 및 출력 파일에 대한 온라인 솔루션을 시도했다 :

bteq <myscript.txt> mylog.log 

하지만 중 하나가 작동하지 않았다.

+0

일괄 처리 스크립트는 정확히 입력 된 것처럼 작동하는 명령 집합이 아니라 'cmd.exe'에 의해 직접 실행될 명령 집합입니다. 그것들은 직접 (같은 줄에) 전달하지 않거나 파일에 쓰거나 하위 프로그램을 읽지 않는 한 하위 프로그램으로 전달되지 않습니다. 이것을 시도해보십시오 : 시작 -> 실행 -> cmd.exe를 입력하고'날짜 선택; '을 입력하십시오. 네가하는 말을 이해하지 못할거야. cmd.exe는 하위 프로그램이 실행되는 동안 일괄 처리 스크립트 실행을 일시 중지 한 다음 하위 프로그램이 끝나면 다음 줄 (쿼리)을 실행합니다. –

+0

@ 메릴 린 그래서 나는 이렇게 할 수 없다? 다른 방법으로 나를 도울 수 있습니까? – manuel

답변

2

두 파일이 필요합니다. 하나는 배치이고 다른 하나는 명령입니다.

배치 파일 :

echo off 
cd C:\bteq_directory\ 
bteq <c:\commands.txt> c:\output.txt 2>&1 
@echo off goto end 
:end @echo exit 

명령 :

.LOGON server/username,password 
select date; 
.LOGOFF 

편집 :

제거 세미콜론 .LOGON...

+0

안녕하세요. Michal, 답변 해 주셔서 감사합니다.하지만 여전히 작동하지 않습니다. *** 경고 : DBC/SQL 요청을 보내기 전에 로그온해야합니다. " – manuel

+0

@manuel, 이제 시도하십시오 .LOGON 명령 후 세미콜론을 제거했습니다 –

+0

여전히 동일합니다 (-_-) – manuel

0

이 여기에 조금 늦게, 그러나 후에 무엇을 것입니다 I 찾은 분 :

나는 BTScript.txt라는 파일에 내 BTEQ 스크립트를 저장합니다

.LOGON <servername>/<username>,<password>; 
.SET WIDTH 20000; 
.SET separator '|'; 
.EXPORT FILE = C:\TEMP\testBTEQ.txt; 
SELECT top 10 * ATABLENAME; 
.LOGOFF 
.EXIT 

폭의 설정은 기록이 긴 것을 밤은 경우는 20000 개 문자로 이동하지 않습니다, 데이터가 절단되지 않도록하기 위해 필요 .

나는 실행이 실행하려면 그중의 내용을 정보 파일 박쥐에 (내 PC는 내가이 일을 Windows 탐색기에서 파일을 더블 클릭 할 수 있도록 설정되어 있습니다) :

echo off 
bteq <C:\temp\BTScript.txt> c:\temp\bteqscriptout.txt 2>&1 
@echo off goto end 
:end @echo exit 

여기에 언급 된 두 번째 파일에는 BTEQ의 출력이 포함됩니다.