2008-12-23 88 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