当前位置:首页 » 编程语言 » cmd脚本执行sql脚本
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

cmd脚本执行sql脚本

发布时间: 2022-01-22 11:14:06

A. 如何使用sqlcmd在批处理脚本中执行SQL

使用sqlcmd可以在批处理脚本中执行SQL。虽然这个命令的参数很多,但幸运的是,我们不需要全部理解,在这里简要介绍以下几个:
{ -U login_id [ -P password ] } | –E trusted connection }] 如果指定了-E就不需要指定用户名密码,当然指定了用户名密码就不用-E了;
-S server_name [ \ instance_name ] 数据库服务器,如果不在本机的话必须指定;
-d db_name 数据库名字,必须的;
[ -i input_file ] [ -o output_file ] sql存在文件里的话用-i,输出到文件用-o;
[ -q "cmdline query" ] [ -Q "cmdline query" and exit ] 输入是简单的sql,不用文件,推荐用-Q,如果你执行完sqlcmd还需要执行别的动作的话;
[ -W remove trailing spaces ] 删除多余的空格,结果会更紧凑。
当我们在真正的脚本中执行sql时,通常需要传入和输出变量。
传入变量比较简单,如下所示:
sqlcmd -d test -Q "select * from dbo.Investment where investor=$(x)" -v x='IBM' -W
这个语句从test数据库的Investment表中选出investor等于x的所有行,注意到变量x被包含在${}中。
然后用-v定义了x的值,'IBM'。
-W确定输出的结果不包含多余的空格。
x的值如果没有在sqlcmd中设定,系统会试图从别的地方去寻找,可能的地方包括,系统环境变量,用户环境变量,以及用在sqlcmd之前用set设定的变量值。
如果你的数据里确实包含${},那么你并不希望进行变量的替换,使用-x选项可以禁止变量的替换。
有些时候,你还希望能获得sql执行结果并保存到变量中。比如你们的日志系统每天都在产生日志文件,你要执行一个脚本来处理这些日志文件并存到数据库中。在处理之前,你必须读取数据库以确定上次处理到那一天了。你期望这样能解决你的问题:
sqlcmd -d test -Q "select ${x}=max(date) from dbo.logDates " -W
但这样并不工作。因为sqlcmd并不提供输出变量。
不过你可以这样做:
sqlcmd -d test -Q "declare @x nvarchar(8);select @x=max(date) from dbo.logDates;print @x; " -W
这样你就可以得到一个干干净净的数字,而不会包含列名和其他信息。
接着你将上述结果导入到一个文件里:
sqlcmd -d test -Q "declare @x nvarchar(8);select @x=max(date) from dbo.logDates;print @x; " -W 1.txt
现在到了最关键的一步,将文件的内容写入到变量里:
set /P myvar=<1.txt
/p表明这个变量myvar的值需要用户输入;
<1.txt表明从1.txt中读入而不是从其他地方读入。
这样,我们就巧妙的把sql执行的结果写入到变量里了。

B. 使用sqlcmd执行数据库脚本

放在跟sqlcmd 同个目录 或者 写明aaa.sql的绝对路径

C. 如何将sql脚本放入批处理(.bat)文件中执行

cmd /c osql -S"127.0.0.1" -U"sa" -P"123" -d"Test" -i"E:\资料\学习\MSSQL\Dos执行文件\test.sql"

-S :数据库IP地址
-U:用户名

-P:密码

-d:数据库名
-i :数据库文件

注意:在没有装有数据库的情况下 , 你的系统中可能没有osql工具的环境 , 此时我们只需要将 OSQL.EXE和osql.rll两个文件拷到c:\window\system32目录下即可

D. cmd怎么执行sql脚本

先使用cmd连接并打开数据库,然后才能执行SQL脚本。

E. bat脚本的具体使用,执行sql语句


(echo select * from cityinfo2;&echo select * from correct2 limit 100;)|mysql -h192.168.2.4 -uadm -pmobiston admin -t
或者
mysql -h192.168.2.4 -uadm -pmobiston admin -e "select * from cityinfo2;select * from correct2 limit 100;"

F. windows中在cmd命令行,执行sql 脚本,能使用for循环么

这个块的后面加上 / 试试

G. 怎样在程序中执行sql脚本文件

你可以参考一下这个:

classSqlHelper
{
staticstringstrCon="DataSource=.;InitialCatalog=ProctInfo;IntegratedSecurity=true;";
SqlConnectionsqlCon=newSqlConnection(strCon);

publicvoidOpensqlCon()
{
try
{
if(sqlCon.State==ConnectionState.Closed)
{
sqlCon.Open();
}
}
catch
{
thrownewException("数据库连接失败!");
}
}

publicvoidClosesqlCon()
{
if(sqlCon!=null)
{
if(sqlCon.State==ConnectionState.Open)
{
sqlCon.Close();
}
}
}

publicDataSetGetDataSet()
{
DataSetds=newDataSet();
SqlDataAdaptersda=newSqlDataAdapter("select*fromtbl_Proct",sqlCon);
try
{
OpensqlCon();
sda.Fill(ds);
}
catch(Exceptionex)
{
System.Windows.Forms.MessageBox.Show(ex.Message,"获取数据失败!");
}
finally
{
ClosesqlCon();
}
returnds;
}

publicDataTableGetDataTable()
{
stringsql=string.Format("select*fromtbl_Proct");
OpensqlCon();
SqlDataAdapterda=newSqlDataAdapter(sql,sqlCon);
DataTabledt=newDataTable();
da.Fill(dt);
ClosesqlCon();
returndt;
}

publicstringInsert(stringid,stringparentID,stringname,stringcategory)
{
stringsql=string.Format("insertintotbl_Proctvalues('{0}','{1}','{2}','{3}')",id,parentID,name,category);
OpensqlCon();
SqlCommandcmd=newSqlCommand(sql,sqlCon);
stringresult=cmd.ExecuteNonQuery().ToString();
ClosesqlCon();
returnresult;
}

publicstringDelete(stringid)
{
stringsql=string.Format("deletefromtbl_ProctwhereID='{0}'",id);
OpensqlCon();
SqlCommandcmd=newSqlCommand(sql,sqlCon);
stringresult=cmd.ExecuteNonQuery().ToString();
ClosesqlCon();
returnresult;
}

publicstringUpdate(stringid,stringparentID,stringname,stringcategory)
{
stringsql=string.Format("updatetbl_ProctsetParentID='{0}',Name='{1}',Category='{2}'whereID='{3}'",parentID,name,category,id);
OpensqlCon();
SqlCommandcmd=newSqlCommand(sql,sqlCon);
stringresult=cmd.ExecuteNonQuery().ToString();
ClosesqlCon();
returnresult;
}
}

H. 用批处理执行SQL文件的脚本应该怎么写

步骤:(1) 创建一个批处理文件:打开记事本,创建数据库连接信息(例如,server name,username,password,databasename等)以及要执行的*.sql脚本名称。具体语法参考下文"osql 实用工具" 。 将文件的扩展名改为.bat 并保存。

示例1:指定待执行sql 文件的相对路径

osql -S admin\admin -U sa -P sa -d TestDB -i c:\test.sql
pause

示例2: 待执行文件与bat文件在同一个目录,指定相对路径

set localdir=%~dp0
osql -S (local) -U sa -P sa -d Test -i %localdir%\test1.sql
osql -S (local) -U sa -P sa -d Test -i %localdir%\test2.sql
osql -S (local) -U sa -P sa -d Test -i %localdir%\test3.sql
pause

(2) 创建需要执行的sql 脚本, test.sql,test2.sql 和test3.sql, 并放在步骤(1)示例1中指定的位置。本例为c:\ 根目录。如果用示例2,将待执行的sql和bat文件放在同一个目录下。

(3) 双击*.bat 文件并查看运行结果。

I. 用cmd命令执行SQL脚本的问题

-- To allow advanced options to be changed.EXEC sp_configure 'show advanced options', 1GO-- To update the currently configured value for advanced options.RECONFIGUREGO-- To enable the feature.EXEC sp_configure 'xp_cmdshell', 1GO-- To update the currently configured value for this feature.RECONFIGUREGO这个先写了保证不会再Cmd中出错然后//这是判断是否有同名的数据库存在if exists (select * from sysdatabases where name = 'hotel')
drop database hotel
go//这是判断是否有同名的表if exists (select * from sysobjects where name = 'hotel')
drop table hotel
go