sql中的批處理,如何使用sqlcmd在批處理指令碼中執行SQL

時間 2022-01-03 03:12:07

1樓:匿名使用者

sql批處理:指包含一條或多條t - sql語句的語句組,這組語句從應用程式一次性地傳送到sql server伺服器執行。編批處理程式時,最好能夠以分號結束相關語句。

雖然這不資料庫強制求,但筆還強烈建議如此處理。方面這有利於提批處理程式讀性。批處理程式往往完成些比較複雜成套功能,而每條語句則完成項獨立功能。

此有時個比較複雜些批處理程式其往往有百行容。此時提其讀性,最好能夠利分號進行語句語句間分隔。二未版本性。

其實sql server資料庫設計時候,開始這方面就關不嚴。現部分標準程式編器都實現類似強制控制。根據憲梓微軟官方提供資料看,以sql server資料庫版本,這個規則能成個強執行規則,即必須每條語句面利分號進行分隔。

此能夠跟續sql server資料庫版本進行,最好從現開始就採分號分隔批處理程式每條語句。

2樓:匿名使用者

1、多個sql語句用 go 區分開2、方便執行,管理3、在做資料庫升級和維護的時候用起來很方便的

如何使用sqlcmd在批處理指令碼中執行sql

3樓:手機使用者

使用sqlcmd可以在批處理指令碼中執行sql。雖然這個命令的引數很多,但幸運的是,我們不需要全部理解,在這裡簡要介紹以下幾個:

| –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 $=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執行的結果寫入到變數裡了。

4樓:匿名使用者

1、新建test.sql,如圖:

3、執行批處理 test.bat ,即可以自動執行 test.sql指令碼。

如何將sql指令碼放入批處理(.bat)檔案中執行

5樓:d調的聰

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目錄下即可

如何更改sql中某列的值,如何更改SQL中某列的值

通過update方法實現。sql update table tablename t set filename 值1 where t.name 條件 解釋 更改某列,說明有條件,所有必須通過 where 條件語句定位到列。定位成功後,通過set方法給固定欄位賦值即可。上面sql語句的意思 更改tabl...

sql中或如何表示,sql中怎麼表示“不等於”(資料庫,SQL)

是用 or 來表示的 將兩個條件組合起來,在一個語句中使用多個邏輯運算子時,在and 運算子之後對or運算子求值,不過使用括號可以更改求值的順序 語法 boolean expression or boolean expression 引數 boolean expression返回 true fals...

sql中怎麼隨機查,如何在sql中隨機抽樣

declare a table id int name varchar 20 insert a select 1,張三 union select 2,李四 union select 3,王五 union select 4,毛六 隨機取兩條,隨機關鍵在於 order by newid select t...