當前位置:首頁 » 編程語言 » 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