2011-02-04 5 views
1

파일을 입력으로 사용하는 배치 스크립트를 작성하는 방법은 해당 파일에 대해 SQL 쿼리를 수행하고 파일을 출력으로 제공합니다.SQL 문을 처리하는 배치 파일을 작성하는 방법

입력은 4 개의 쿼리가있는 텍스트 파일이됩니다. 이제 한 번에 하나의 쿼리를 가져와 실행하고 출력을 파일에 저장하는 배치 파일을 작성해야합니다. 따라서 4 개의 쿼리에 대해 4 개의 개별 출력 파일이있을 것입니다.

+0

특정이 파일은 CSV 형식입니까? 또한 질문 제목을 다시 말해보십시오. 너무 일반적입니다. – SpliFF

+0

다른 질문을 한 번 더 물어보십시오. 나는 당신이 단순히 너무 모호하고 다른 하나에 훨씬 더 잘 집중하여 이것을 닫는 것이 좋습니다 : http://stackoverflow.com/questions/4895725/batch-file-which-will-take-a-text-file- as-an-input – paxdiablo

+0

위 질문에 대한 답에 답글을 추가하고 제목을 조금 변경했습니다. – wimh

답변

0

일반적으로 일반 파일에서 SQL 쿼리를 수행하지는 않습니다. 일반적으로 SQL을 해석하고 관련 파일을 추출하려면 일반적으로 DBMS (데이터베이스 관리 시스템)가 필요합니다. 데이터.

배치 파일을 작성하는 것은 상대적으로 쉽습니다. bash 또는 cmd.exe과 같은 UNIX 셸일 수 있습니다.

하지만 텍스트 파일 (또는 데이터베이스 파일이 아닌 파일)에서 작동하는 완전한 SQL 쿼리 언어를 구현하려는 경우 스택 오버플로에 대한 질문이 한 가지 더 많이 걸릴 것입니다.

아마 우리가 요구 사항을 잘못 이해했기 때문에 좀 더 자세하게 문제를 풀 수 있습니다.

+0

작업은 프로세스를 자동화하는 것입니다. 그래서이 파일을 파싱하기위한 배치 스크립트를 작성해야한다. 입력은 첨부 파일이 될 것이고, 필자는 결국 한 줄에 sql 쿼리 만 있으면되고 출력은 파일에 있어야한다. 각 입력 파일에는 4 개의 Sql 쿼리가 있습니다. 그래서 각 SQL 쿼리는 새로운 줄에 있어야합니다. – sudeep

+0

@sudeep : 그래서 당신이 요구하는 것은 SQL 인터프리터와 추출 엔진이 작성되어서 당신이 첨부 한 파일을 처리하고 추출 된 데이터를 파일에 씁니다. 그렇다면 제안하는 것의 복잡성을 완전히 이해했다고는 생각하지 않습니다. – paxdiablo

+0

입력은 4 개의 쿼리가있는 텍스트 파일이됩니다. 이제 한 번에 하나의 쿼리를 가져와 실행하고 출력을 파일에 저장하는 배치 파일을 작성해야합니다. 그래서 4 쿼리를위한 4 개의 개별 출력 파일이있을 것입니다. – sudeep

0

당신이 찾고있는 것이 Microsoft Log Parser 2.2이라고 생각합니다. 그것은 당신이 로그, CSV 및 XML 파일을 포함한 여러 파일 형식에 SQL 쿼리를 실행할 수 있습니다.

+0

입력은 4 개의 쿼리가있는 텍스트 파일이됩니다. 이제 한 번에 하나의 쿼리를 가져와 실행하고 출력을 파일에 저장하는 배치 파일을 작성해야합니다. 따라서 4 개의 쿼리에 대해 4 개의 개별 출력 파일이 있습니다. – sudeep

2

사용중인 SQL 서버를 지정하지 않았습니다.이 예제에서는 firebird를 사용합니다. 다른 SQL Server를 사용하는 경우 올바른 sql 명령 줄 도구 및 구문을 사용해야합니다. 파이어 버드는 isql.exe를 사용합니다.

select * from CUSTOMER; 
select * from DEPARTMENT; 
select * from EMPLOYEE; 
select * from SALES; 

다음이 배치 파일이 isql.exe을 이용하여 각각의 명령을 실행하고, 각 명령에 대한 별도의 출력 파일을 생성한다 :

Asuming 제가 함유 4 SQL 명령 "input.sql"는 다음 텍스트 파일이있다 :

@echo off 

set sql_exe="C:\Program Files\Firebird\Firebird_2_5\bin\isql.exe" 
set sql_options=-u sysdba -p masterkey 
set sql_db="C:\Program Files\Firebird\Firebird_2_5\examples\empbuild\EMPLOYEE.FDB" 
set count=1 

for /f "delims=" %%a in (input.sql) do (
    echo %%a > temp.sql 
    call :processtemp_sql 
) 
goto :eof 


:processtemp_sql 
%sql_exe% %sql_options% -i temp.sql -o output%count%.txt %sql_db% 
set /A count=%count%+1 
goto :eof 


:eof 

끝에 output1.txt..output4.txt가 생성됩니다. 각 파일은 하나의 sql 명령의 출력을 포함합니다.

관련 문제