2008-12-23 28 views
2

是否有任何方法讓Windows批處理文件直接輸入SQL語句而不調用腳本?我想讓批處理文件登錄到SQL,然後直接輸入語句。Windows批處理文件中的SQL語句

編輯:我使用的是Oracle v10g

+0

您正在使用的RDBMS和版本可能會在這裏產生很大的差異。 – 2008-12-23 19:46:44

回答

3

對於單個命令,您可以使用這一招:

echo select * from dual; | sqlplus user/[email protected] 
2

簡短的回答:自己第批處理文件無法做到這一點。

長答案:根據您使用的數據庫服務器類型以及命令行客戶端提供的功能,您可能會接近。

你正在使用什麼樣的數據庫服務器? Oracle,mySql,Sybase,Microsoft,Terradata,???

例如,對於Sybase數據庫,你可以使用ISQL命令行客戶端從一個批處理文件運行:

isql -S server -D database -U user -P password -i script 
3

運行SQL服務器2005/2008上的東西,你可以使用sqlcmd命令行實用程序。 sqlcmd -h打印交換機列表。

0

outwit tool suite的odbc命令允許您在任何已爲其定義適當的ODBC數據源的數據庫上運行select語句。

0

您可以使用http://tekkies.co.uk/go/runsqloledb

例如 RunSQLOLEDB 「提供者= SQLOLEDB;數據源=(本地); ...」 「SELECT GETDATE()」 或 RunSQLOLEDB @ ConnectionString.txt @ query.sql的

0

這裏是MSSQL其可以粗略示例腳本能夠針對Oracle進行修改:

@ECHO off 
SETLOCAL ENABLEDELAYEDEXPANSION 
:: batch file for sql query 
SET STARTDATE=20101010 
SET ENDDATE=20111109 
SET AGENCYNAME=Agency 
SET DBNAME=AccidentDB 

SET SQLSTRING=SELECT Acc.INC_ID,^ 
Veh.MAKE, Veh.MODEL, Veh.LIC_NUM^ 
FROM Acc,^ 
lnk_Acc_Veh, Veh^ 
WHERE  (INC_NUM LIKE '20115000%')^ 
AND lnk_Acc_Veh.link_id=Veh.key^ 
AND lnk_Acc_Veh.link_id=Acc.key^ 
AND Acc.date ^> '%STARTDATE%' OR Acc.date ^< '%ENDDATE%'; 

CLS 
@ECHO. 
@ECHO. 
@ECHO DBNAME is %DBNAME% 
@ECHO. 
@ECHO SQLSTRING is "!SQLSTRING!" 
@ECHO. 
@ECHO ------------------------------------------------------ 
@sqlcmd.exe -b -S localhost -E -d !DBNAME! -Q "!SQLSTRING!" -W 
@ECHO. 
@ECHO Report is done. Hit any key to close this window.... 
@pause>nul