2011-10-03 3 views
1

sqlite 쉘에서 sql 쿼리를 실행하기 위해 vbscript를 작성 중이며 .quit 또는 .exit를 사용해야하는지 궁금합니다. 이 vbscript를 실행하기 위해 작업 스케줄러에서 작업을 설정할 때 sqlite 쉘은 작업 스케줄러가 실행될 때마다 생성 된 새 인스턴스를 얻고 이로 인해 SQL 쿼리가 실행되지 않도록 적절하게 종료/종료하지 않습니다. vbscript를 두 번 클릭하면 정상적으로 실행되고 sqlite 셸이 정상적으로 존재합니다.sqlite에서 .quit와 .exit 사이에 차이점이 있습니까?

누군가 도와 드릴 수 있습니까?

VBScript를 :

Dim objShell 
Dim main_database_file, main_output_file, main_sqlite_file 
Dim TAB, LINE 

'Set default values here if necessary 
main_database_file = "G:\example\data\reporting\lastmonth" 
main_sqlite_file = "G:\example\sqlite-shell.exe" 
main_output_file="G:\example\scripts\display-time.csv" 

Set objShell = createObject("Wscript.Shell") 

sql = "select * from project;" 

objShell.Run """"& main_sqlite_file &"""" & """"& main_database_file &"""" 
WScript.Sleep(500) 
objShell.Sendkeys(".separator ,{ENTER}") 
objShell.Sendkeys(".headers ON{ENTER}") 
objShell.Sendkeys(".output '" & main_output_file &"'{ENTER}") 
objShell.Sendkeys(sql & "{ENTER}") 
WScript.Sleep(500)  
objShell.Sendkeys(".quit{ENTER}") 
Set objShell = Nothing 
+0

코드를 붙여주십시오. vbscript는 sqlite 명령 줄 exe (sqlite3.exe)에 명령을 어떻게 입력합니까? –

+0

@Tom, 코드는 다음과 같습니다. – eLearner

답변

0

나는 의사에게 아무런 차이가 없다는 것을 잭과 동의 할 것이다. 그러나 명령 행 처리기로 명령을 파이프하지 않는 이유는 무엇입니까? 당신은 하나의 실행 명령 위의 각 단계를 포함하는 'SQL'파일을 생성하고 실행할 수 있습니다 (! 테스트하지)

뭔가처럼을

SQL 파일 :

.seperator , 
.headers on 
etc.. 

다음이 실행 파일 이름 :

shell.run "sqlite-clp.exe mydb.db < sqlfile.sql" 

arbirary timeouts가 필요하지 않으며 아마도 params도 전달할 수 있습니다.

PS : 문제가되는 예약 된 작업의 컨텍스트에서 실행중인 sendkeys 일 수도 있습니다.

1

글쎄, the documentation에 따라, 모두 .quit.exit의 설명은 "이 프로그램을 종료합니다", 그래서 내가 아니, 그렇게 생각하지 않는다.

0

유일한 차이점은 .quit이 일부 유닉스 시스템에서는 작동하지 않는다고 생각합니다.

+0

흥미 롭다. 나는 그것을 몰랐다. FWIW,'.quit'는 SUSE Enterprise에서 SQLite 버전 3.7.7.1과 호환됩니다. –

+0

네이트,이 정보는 어디서 얻었습니까? –