SQL Server命令行導數據兩種方式bcp和sqlcmd
先說一下bcp:
BCP是SQL Server中負責導入導出數據的一個命令行工具,它是基於DB-Library的,並且能以並行的方式高效地導入導出大批量的數據。
BCP共有四個動作可以選擇。
(1) 導入。
這個動作使用in命令完成,後面跟需要導入的文件名。
(2) 導出。
這個動作使用out命令完成,後面跟需要導出的文件名。
(3) 使用SQL語句導出。
這個動作使用queryout命令完成,它跟out類似,只是數據源不是表或視圖名,而是SQL語句。
(4) 導出格式文件。
這個動作使用format命令完成,後而跟格式文件名。
下面介紹一些常用的選項:
-f format_file
format_file表示格式文件名。這個選項依賴於上述的動作,如果使用的是in或 out,format_file表示已經存在的格式文件,如果使用的是format則表示是要生成的格式文件。
-x 這個選項要和-f format_file配合使用,以便生成xml格式的格式文件。
-F first_row 指定從被導出表的哪一行導出,或從被導入文件的哪一行導入。
-L last_row
指定被導出表要導到哪一行結束,或從被導入文件SQL Server命令行導數據時,導到哪一行結束。
-c使用char類型做爲存儲類型,沒有前綴且以”\t”做爲字段分割符,以”\n”做爲行分割符。
-w 和-c類似,只是當使用Unicode字符集拷貝數據時使用,且以nchar做爲存儲類型。
-t field_term 指定字符分割符,默認是”\t”。
-r row_term 指定行分割符,默認是”\n”。
-S server_name[ \instance_name]
指定要連接的SQL Server服務器的實例,如果未指定此選項,BCP連接本機的SQL Server默認實例。如果要連接某臺機器上的默認實例,只需要指定機器名即可。
-U login_id 指定連接SQL Sever的用戶名。
-P password 指定連接SQL Server的用戶名密碼。
-T 指定BCP使用信任連接登錄SQL Server。如果未指定-T,必須指定-U和-P。
-k 指定空列使用null值插入,而不是這列的默認值。
exp:
BCP AdventureWorks.sales.currency out c:\currency1.txt -c -U”sa” -P”password” –使用密碼連接或BCP AdventureWorks.sales.currency out c:\currency1.txt -c -T –使用信任連接
BCP不僅可以接受表名或視圖名做爲參數,也可以接受SQL做爲參數。通過SQL語句可以對要導出的表進行過濾,然後導出過濾後的記錄。
EXEC master..xp_cmdshell ‘BCP “SELECT TOP 20 * FROM AdventureWorks.sales.currency” queryout c:\currency2.txt -c -U”sa” -P”password”‘
BCP還可以通過簡單地設置選項對導出的行進行限制。
EXEC master..xp_cmdshell ‘BCP “SELECT TOP 20 * FROM AdventureWorks.sales.currency” queryout c:\currency2.txt -F 10 -L 13 -c -U”sa” -P”password”‘
接着說sqlcmd:啓動 sqlcmd 實用工具並連接到 SQL Server 的默認實例
A、在“開始”菜單上,單擊“運行”。在“打開”框中,鍵入 cmd,然後單擊“確定”打開命令提示符窗口。
B、在命令提示符處,鍵入 sqlcmd。
C、按 Enter 鍵。
現在,您已與計算機上運行的默認 SQL Server 實例建立了可信連接。是 sqlcmd 提示符,可以指定行號。每按一次 Enter,該數字就會加 1。
D、若要結束 sqlcmd 會話,請在 sqlcmd 提示符處鍵入 EXIT。
exp:sqlcmd -S localhost -d databasename -U sa -P 12345 -i d:\test.sql
以上的相關內容就是對SQL Server命令行導數據的介紹,望你能有所收穫。
該文章出自黃頁搜搜,原文鏈接:http://news.huangyesoso.com/Details/3255.html 轉載請務必保留此鏈接,謝謝!
SQLServer的命令行工具-sqlcmd等..
分類: SQL SERVER基礎知識 2011-05-18 10:06 857人閱讀 評論(0) 收藏 舉報
和往常一樣,我們先使用 /?來看看sqlcmd的啓動參數們:
C:Documents and Settingschenxie.IFLYTEK>sqlcmd.exe /?
Microsoft (R) SQL Server 命令行工具
版本 9.00.1399.06 NT INTEL X86
版權所有 (c) Microsoft Corporation。保留所有權利。
用法: Sqlcmd [-U 登錄 ID] [-P 密碼]
[-S 服務器] [-H 主機名] [-E 可信連接]
[-d 使用數據庫名稱] [-l 登錄超時值] [-t 查詢超時值]
[-h 標題] [-s 列分隔符] [-w 屏幕寬度]
[-a 數據包大小] [-e 回顯輸入] [-I 允許帶引號的標識符]
[-c 命令結束] [-L[c] 列出服務器[清除輸出]]
[-q "命令行查詢"] [-Q "命令行查詢" 並退出]
[-m 錯誤級別] [-V 嚴重級別] [-W 刪除尾隨空格]
[-u unicode 輸出] [-r[0|1] 發送到 stderr 的消息]
[-i 輸入文件] [-o 輸出文件] [-z 新密碼]
[-f <代碼頁> | i:<代碼頁>[,o:<代碼頁>]] [-Z 新建密碼並退出]
[-k[1|2] 刪除[替換]控制字符]
[-y 可變長度類型顯示寬度]
[-Y 固定長度類型顯示寬度]
[-p[1] 打印統計信息[冒號格式]]
[-R 使用客戶端區域設置]
[-b 出錯時中止批處理]
[-v 變量 = "值"...] [-A 專用管理連接]
[-X[1] 禁用命令、啓動腳本、環境變量[並退出]]
[-x 禁用變量情況]
[-? 顯示語法摘要]
呵呵,和osql沒什麼變化吧。下面我將仔細解釋每個參數和它們的使用方法。
下面是這些參數的詳細解釋(注意,區分大小寫):
1. 首先是登陸方面的:
如果 –U -P –S都是空,比如直接在CMD下打 sqlcmd或sqlcmd.exe將使用本地賬戶嘗試連接本地數據庫
-U login_id
用戶登錄 ID。登錄 ID 區分大小寫。
如果 -U 選項和 -P 選項均未指定,sqlcmd 將嘗試使用 Microsoft Windows 身份驗證模式進行連接。身份驗證基於運行 sqlcmd 的用戶的 Windows 帳戶。
如果 -U 選項與 -E 選項(在本主題的後面詳細說明)一起使用,將生成錯誤消息。如果 –U 選項後有多個參數,將生成錯誤消息並退出程序。
-P password
用戶指定的密碼。密碼是區分大小寫的。如果未使用 -P 選項,並且未設置 SQLCMDPASSWORD 環境變量,則 sqlcmd 會提示用戶輸入密碼。如果在命令提示符的末尾使用 -P 選項而不帶密碼,sqlcmd 將使用默認密碼 (NULL)。
通過向控制檯打印密碼提示,可以顯示密碼提示,如下所示:
Password:
隱藏用戶輸入,這意味着將不會顯示任何輸入的內容,光標保留原位不動。
如果將 -P 選項與 -E 選項一起使用,將生成錯誤消息。
如果 –P 選項後有多個參數,將生成錯誤消息並退出程序。
-E
使用可信連接而不是用戶名和密碼登錄 SQL Server。默認情況下,sqlcmd 將使用可信連接選項。
-E 選項會忽略可能的用戶名和密碼環境變量設置,例如 SQLCMDPASSWORD。如果將 -E 選項與 -U 選項或 -P 選項一起使用,將生成錯誤消息。
-S server_name [ instance_name ]
指定要連接的 SQL Server 的實例。它設置 sqlcmd 腳本變量 SQLCMDSERVER
指定 server_name 將連接到該服務器中 SQL Server 的默認實例。指定 server_nameinstance_name 將連接到該服務器中 SQL Server 的命名實例。如果未指定服務器,sqlcmd 將連接到本地計算機上的 SQL Server 的默認實例。從網絡上的遠程計算機執行 sqlcmd 時,此選項是必需的。
如果在啓動 sqlcmd 時未指定用戶名,SQL Server 將檢查並使用 SQLCMDSERVER 環境變量。如果未指定服務器,則使用工作站名稱。
-H wksta_name
工作站的名稱。此選項設置 sqlcmd 腳本變量 SQLCMDWORKSTATION。該工作站名稱在 sys.processes 目錄視圖的 hostname 列中列出,並可使用存儲過程 sp_who 返回。如果未指定此選項,則使用當前計算機名稱。此名稱可用來標識不同的 sqlcmd 會話。
2. 連接設置:
-l time_out
指定 sqlcmd 到 OLE DB 訪問接口的登錄超時時間。此選項設置 sqlcmd 腳本變量 SQLCMDLOGINTIMEOUT。登錄 sqlcmd 的默認超時時間爲 8 秒。登錄超時設定必須是介於 0 和 65534 之間的數字。如果提供的值不是數值或不在此範圍內,sqlcmd 將生成錯誤消息。該值爲 0 時,則允許無限制等待。
-t time_out
指定命令(或 SQL 語句)超時的時間。此選項設置 sqlcmd 腳本變量 SQLCMDSTATTIMEOUT。如果未指定 time_out 值,則命令將不會超時。登錄 time_out 必須是介於 1 和 65535 之間的數字。如果提供的值不是數值或不在此範圍內,則 sqlcmd 將生成錯誤消息。
注:實際的超時值可能會與指定的 time_out 值相差幾秒。幾秒,不是幾毫秒,別看錯了。
-d db_name
啓動 sqlcmd 時發出一個USE db_name 語句。此選項設置 sqlcmd 腳本變量 SQLCMDDBNAME。它指定初始數據庫。如果數據庫不存在,則生成錯誤消息且 sqlcmd 退出
-A
使用專用管理員連接 (DAC) 登錄到 SQL Server。此類型連接用於排除服務器故障。這隻適用於支持 DAC 的服務器。如果 DAC 不可用,sqlcmd 會生成錯誤消息,然後退出。很好的東西,下面會詳細介紹。
-I
將 SET QUOTED_IDENTIFIER 連接選項設置爲 ON。默認情況下,將其設定爲 OFF。這與SQL Server的默認設置不同,SQL是設置默認是ON的。
小帖士:QUOTED_IDENTIFIER,分隔符使用設置。
SET QUOTED_IDENTIFIER 爲 ON(默認值)時,由雙引號分隔的所有字符串都被解釋爲對象標識符。(比如 Select * from [USER],或Select * from “USER”,這裏USER就被視爲非系統保留字)
因此,加引號的標識符不必符合 Transact-SQL 標識符規則。它們可以是保留關鍵字,並且可以包含 Transact-SQL 標識符中通常不允許的字符。不能使用雙引號分隔文字字符串表達式,而必須用單引號括住文字字符串。如果單引號 (') 是文字字符串的一部分,則可以由兩個單引號 (") 表示。當對數據庫中的對象名使用保留關鍵字時,SET QUOTED_IDENTIFIER 必須爲 ON。
當 SET QUOTED_IDENTIFIER 爲 OFF 時,表達式中的文字字符串可以由單引號或雙引號分隔。如果文字字符串由雙引號分隔,則可以在字符串中包含嵌入式單引號,如省略號。
在SQL操作的時候具體,默認值爲ON還是OFF請查SQLServer2005的聯機手冊,上面有詳細描述。
3.顯示設置:
-h headers
指定要在列標題之間打印的行數。系統默認爲每組查詢結果打印一次標題。此選項設置 sqlcmd 腳本變量 SQLCMDHEADERS。使用 -1 指定不能打印標題。如果使用 -1,則在參數和設置之間沒有空格(可以是 -h-1,但不能是 -h -1)。任何無效的值都將導致 sqlcmd 生成錯誤消息,然後退出。
-w column_width
指定用於輸出的屏幕寬度。此選項設置 sqlcmd 腳本變量 SQLCMDCOLWIDTH。該列寬必須是介於 8 和 65536 之間的數字。如果指定的列寬不在此範圍內,則 sqlcmd 將生成錯誤消息。默認寬度爲 80 個字符。在輸出行超出指定的列寬時,將轉到下一行。
-e
將輸入腳本打印到標準輸出設備 (stdout)。
-r [ 0 | 1]
將錯誤消息輸出重定向到屏幕 (stderr)。如果未指定參數或指定參數爲 0,則僅重定向嚴重級別爲 17 或更高的錯誤消息。如果指定參數爲 1,則將重定向所有消息輸出(包括 PRINT)。
-k [ 1 | 2 ]
刪除輸出中的所有控制字符,例如製表符和換行符。這會在返回數據時保留列格式。如果指定了 1,則控制字符被一個空格替代。如果指定了 2,則連續的控制字符被一個空格替代。
-p [ 1 ]
打印每個結果集的性能統計信息。以下示例是性能統計信息的格式:
Network packet size (bytes): n
x xact[s]:
Clock Time (ms.): total t1 avg t2 (t3 xacts per sec.)
其中
x = SQL Server 處理的事務數。
t1 = 所有事務的總時間。
t2 = 單個事務的平均時間。
t3 = 每秒的平均事務數。
所有時間均以毫秒錶示。
如果指定了可選參數 1,則統計信息的輸出格式爲以冒號分隔的格式,此格式可以由腳本輕鬆導入到電子表格中或進行處理。
如果可選參數是除 1 之外的任何值,則將生成錯誤並且 sqlcmd 將退出。
-o output_file
標識從 sqlcmd 接收輸出的文件。
如果指定了 -u,則 output_file 以 Unicode 格式存儲。包含空格的文件名必須用引號引起來。如果文件名無效,將生成一個錯誤消息,並且 sqlcmd 將退出。sqlcmd 不支持向同一文件併發寫入多個 sqlcmd 進程。文件輸出將損壞或不正確。
-u
指定無論 input_file 爲何種格式,output_file 都以 Unicode 格式進行存儲。
4.查詢配置:
-q " query "
啓動 sqlcmd 時執行查詢,但是在查詢完成時不退出 sqlcmd。將查詢用引號引起來,如下例所示。(建議不要使用這個,如果是寫批處理命令或是程序自動執行,請用下面那個)
在命令提示符下,鍵入(不要在查詢中使用 GO 終止符):
sqlcmd -d AdventureWorks -q "SELECT FirstName, LastName FROM Person.Contact WHERE LastName LIKE 'Whi%'"
如果與此選項同時指定了 -b,sqlcmd 在遇到錯誤時將退出。
-Q " query "
執行查詢並立即退出 sqlcmd,類上。(建議不要使用這個,除非是寫批處理命令或是程序自動執行)
如果與此選項同時指定了 -b,sqlcmd 在遇到錯誤時將退出。
-i input_file[,input_file2...]
標識包含一批 SQL 語句或存儲過程的文件。可以指定要按順序讀取和處理的多個文件。文件名之間不要使用任何空格。sqlcmd 將首先檢查所有指定的文件是否都存在。如果有一個或多個文件不存在,sqlcmd 將退出。
-b
指定錯誤發生時 sqlcmd 退出並返回一個 DOS ERRORLEVEL 值。當 SQL Server 錯誤消息的嚴重級別高於 10 時,返回給 DOS ERRORLEVEL 變量的值爲 1;否則返回的值爲 0。如果除 -b 選項外還設置了 -V 選項,則當嚴重等級低於使用 -V 設置的值時,sqlcmd 將不報告錯誤。命令提示符批處理文件可以測試 ERRORLEVEL 的值並適當處理錯誤。sqlcmd 不對嚴重級別 10 報告錯誤(信息性消息)。
如果 sqlcmd 腳本包含錯誤的註釋、語法錯誤或缺少腳本變量,則返回的 ERRORLEVEL 爲 1。
-V
指定 sqlcmd 報告的最低嚴重級別。Transact-SQL 腳本中發生錯誤時,僅當嚴重級別大於或等於由 -V 開關指定的值時,才報告嚴重級別。如果嚴重級別低於該值,則報告 0。命令提示符批處理文件可以測試 ERRORLEVEL 的值並適當處理錯誤。
-s col_separator
指定列分隔符字符。默認爲空格。此選項設置 sqlcmd 腳本變量 SQLCMDCOLSEP。若要使用對操作系統有特殊含義的字符(如 and 字符 (&) 或分號 (;)),請將該字符用雙引號 (") 引起來。列分隔符可以是任意 8 位字符。
-c cmd_end
指定批處理終止符。默認情況下,通過單獨在一行中鍵入“GO”來終止命令並將其發送到 SQL Server。重置批處理終止符時,不要使用對操作系統具有特殊意義的 Transact-SQL 保留關鍵字或字符,即便它們前面有反斜槓也是如此。
-R
設置 SQL Server OLE DB 訪問接口,使其在將貨幣、日期和時間數據轉換爲字符數據時使用客戶端區域設置。
5.參數設置:
-a packet_size
需要不同大小的數據包。該選項設置 sqlcmd 腳本變量 SQLCMDPACKETSIZE。packet_size 必須是介於 512 和 32767 之間的值。如果腳本的兩個 GO 命令之間包含大量 SQL 語句,則使用較大的數據包可以提高腳本執行的性能。我們可以請求更大的數據包,但如果請求被拒絕,sqlcmd 將默認爲服務器默認的數據包大小。
-L [ c ]
列出在本地配置的服務器和在網絡上廣播的服務器的名稱。此參數不能與其他參數結合使用。可以列出的服務器的最大數目是 3000。如果服務器列表由於緩衝區大小而被截斷,則會顯示錯誤消息。
如果指定可選參數 c,則輸出不會顯示 Servers: 標題行,且列出的每個服務器行都沒有前導空格。這稱爲清除輸出。清除輸出可以提高腳本語言的處理性能。
注意:由於網絡廣播的本質,sqlcmd 可能無法及時接收到所有服務器的響應,因此,每次調用此選項時,根據人品的不同,返回的服務器列表可能會有所不同。 :-)
-m error_level
自定義錯誤消息的顯示。顯示高於指定嚴重級別的錯誤的消息號、狀態和錯誤級別。而不顯示嚴重級別低於指定級別的錯誤的信息。用 -1 指定與消息一起返回所有標題,即使是信息性的消息。如果指定了 -1,則在參數和設置之間不能有空格(例如,可以是 -m-1,但不能是 -m -1)。
此選項設置 sqlcmd 腳本變量 SQLCMDERRORLEVEL。
-W
此選項刪除列的尾隨空格。在準備要導出到另一應用程序的數據時,請將此選項和 -s 選項結合使用。不能與 -y 或 -Y 選項結合使用。
-f < codepage > | i: < codepage > [ < , o: < codepage > ]
指定輸入和輸出代碼頁。代碼頁頁碼是指定已安裝的 Windows 代碼頁的數值。
-y display_width
限制爲較大的可變長度數據類型返回的字符數:
· varchar(max)
· nvarchar(max)
· varbinary(max)
· xml
· UDT(用戶定義的數據類型)
· text
· ntext
· image
根據實現,UDT 可以使用固定的長度。如果此固定長度 UDT 的長度比 display_width 短,則返回的 UDT 值將不會受影響。但是,如果此長度比 display_width 長,則輸出將會被截斷。如果 display_width 爲 0,則輸出將會在 1-MB 處截斷。
使用 -y 0 選項時要特別注意,因爲根據返回的數據量大小,此選項可能導致服務器和網絡上出現嚴重性能問題。
-Y display_width
限制爲以下數據類型返回的字符數:
· char
· nchar
· varchar(n),其中 1<n<8000
· nvarchar(n) 其中 1<n<4000
· sql_variant
-v var=" value"[ var="value"...]
創建可用於 sqlcmd 腳本中的 sqlcmd 腳本變量。如果該值包含字符,則將其用引號引起來。可以指定多個 var="values" 值。如果指定的任何值中有錯誤,sqlcmd 會生成錯誤消息,然後退出。
-X [ 1 ]
從批處理文件執行 sqlcmd 時,將禁用可能危及系統安全的命令。禁用的命令仍然可以被識別;sqlcmd 發出警告消息並繼續。如果指定了可選參數 1,則 sqlcmd 將生成錯誤消息,然後退出。使用 -X 選項時,將禁用以下命令:
· ED
· !! command
如果指定 -X 選項,它會阻止將環境變量傳遞給 sqlcmd。同時該選項還會阻止執行通過使用 SQLCMDINI 腳本變量指定的啓動腳本。
-x
導致 sqlcmd 忽略腳本變量。當腳本中包含多個 INSERT 語句,並且這些語句可能包含格式與常規變量,如 $(variable_name) 相同的字符串時,這一選項很有用。
在瞭解完sqlcmd 參數之後,我們載來看看sqlcmd的命令,使用:Help來看看一共有那些命令
1> :Help
:!! [<命令>]
- 在 Windows 命令 shell 中執行命令。
:connect server[instance] [-l 超時值] [-U 用戶 [-P 密
- 連接到 SQL Server 實例。
:ed
- 編輯當前語句緩存或上次執行的語句緩存。
:error <目標>
- 將錯誤輸出重定向到文件、stderr 或 stdout。
:exit
- 立即退出 sqlcmd。
:exit()
- 執行語句緩存;不返回值,直接退出。
:exit(<查詢>)
- 執行指定的查詢;返回數字結果。
go [<n>]
- 執行語句緩存(n 次)。
:help
- 顯示此命令列表。
:list
- 輸出語句緩存的內容。
:listvar
- 列出設置的 sqlcmd 腳本變量。
:on error [exit|ignore]
- 在執行批處理或 sqlcmd 命令時應對錯誤的措施。
:out <文件名>|stderr|stdout
- 將查詢輸出重定向到文件、stderr 或 stdout。
:perftrace <文件名>|stderr|stdout
- 將計時輸出重定向到文件、stderr 或 stdout。
:quit
- 立即退出 sqlcmd。
:r <文件名>
- 將文件內容追加到語句緩存之後。
:reset
- 放棄語句緩存。
:serverlist
- 列出本地 SQL Server 和網絡中的 SQL Server。
:setvar {variable}
- 刪除 sqlcmd 腳本變量。
:setvar <變量> <值>
- 設置 sqlcmd 腳本變量。
Sqlcmd的命令都是以”:”符號開始的(除了GO,打:GO系統會認爲是向緩存區添加了一段字符:GO),雖然有些命令可以省略”:”,但是爲了安全與方便記憶,實用的時候推薦大家還是打上”:”把,辛苦多打下一個”:”不會引發任何血案的,我保證!^_^
下面是每個命令的解釋:
[:] !!< command>
執行操作系統命令,在腳本中常見,極大的增強了交互性能。
當然,偶爾還爲忘記了(或是偷懶想copy)IO文件名的程序員們提供DIR命令。
下面是例子
3> !!dir
驅動器 C 中的卷沒有標籤。
卷的序列號是 044A-C8D9
C:Documents and Settingschenxie.IFLYTEK 的目錄
2006-12-29 08:46 <DIR> .
2006-12-29 08:46 <DIR> ..
2006-12-29 08:46 0 awstats.myvirtualhostname
2006-12-29 08:46 0 awstats.myvirtualhostname.html
2006-12-30 16:23 <DIR> Favorites
2006-12-02 11:49 664 intlname.ols
2006-12-31 09:10 <DIR> My Documents
2006-12-11 14:37 <DIR> VSWebCache
2006-10-27 15:14 <DIR> WINDOWS
2006-12-04 17:39 <DIR> 「開始」菜單
2006-12-30 14:09 <DIR> 桌面
3 個文件 664 字節
8 個目錄 7,063,961,600 可用字節
:Connect server_name[instance_name] [-l timeout] [-U user_name [-P password]]
-關閉當前的連接,連接到另一個的 SQL Server實例。不指定timeout將使用SQLCMDLOGINTIMEOUT變量值。
:ed
- 編輯當前語句緩存或上次執行的語句緩存。
召喚編輯器來編輯緩存中的語句,默認爲Edit.com。可以通過修改SQLCMDEDITOR 環境變量來改變編輯器(比如 SET SQLCMDEDITOR=notepad)。
另外提一句:不知道什麼原因,我使用Edit.com之後回到sqlcmd,所有的中文都無法正確顯示了具體原因也找不到,鬱悶,期待高手。
:Error <filename>|STDERR|STDOUT
- 將錯誤輸出重定向到文件.
若該文件已經存在,則將其截斷爲零字節。若該文件不可訪問(由於權限或其他原因),將不會切換輸出,也不會將輸出發送到上次指定的目標或默認目標。默認情況下,錯誤輸出將發送到 stderr流。
: EXIT[ (statement) ]
- 立即退出 sqlcmd。:EXIT用法很有講究,實用的時候請注意
:EXIT
不執行批處理就立即退出,無返回值。
:EXIT( )
執行批處理後退出,無返回值。
:EXIT(query)
執行包括查詢的批處理,返回查詢的結果後退出。
Statement的值是將第一個結果行的第一列轉換爲 4 字節的整數(長整型)。SQL Server 保留了介於 -1 到 -99 之間的返回值;sqlcmd 定義了以下附加返回值-100:選擇返回值前遇到錯誤。-101:選擇返回值時找不到行。-102:選擇返回值時發生轉換錯誤。
在編寫自動腳本的時候:EXIT很實用。
go [<n>]
- 執行語句緩存(n 次)。示例如下:
1> select count(*) from TestTab;
2> go 3
-----------
410
(1 行受影響)
-----------
410
(1 行受影響)
-----------
410
(1 行受影響)
1>
:list
- 輸出語句緩存的內容。Go過之後,語句即被清掉,:list顯示爲空。示例如下
1> select count(*) from TestTab;
2> :list
select count(*) from LCS_BIZOBJECT;
2> go
-----------
410
(1 行受影響)
1> :list
1>
:listvar
- 列出設置的 sqlcmd 腳本變量,方便使用sqlcmd。
:on error [exit|ignore]
- 在執行批處理或 sqlcmd 命令時應對錯誤的措施。
設置在腳本或批處理執行過程中發生錯誤時要執行的操作。
默認情況下,會打印錯誤消息。
Exit: sqlcmd 退出,並顯示相應的錯誤值。
Ignore: sqlcmd 會忽略錯誤,並繼續執行批處理或腳本。
:out < filename >|stderr|stdout
-將所有查詢結果重定向到 filename 指定的文件、stderr 或 stdout。
默認情況下,輸出將發送到 stdout。
:perftrace < filename >|stderr|stdout
- 將計時輸出重定向到文件、stderr 或 stdout。
默認情況下,輸出將發送到 stdout。
:quit
- 立即退出 sqlcmd。
:r < filename >
- 將文件內容追加到語句緩存之後。
:reset
- 放棄語句緩存。
:serverlist
- 列出網絡中的 SQL Server。
:setvar {variable}
- 刪除 sqlcmd 腳本變量。
:setvar < variable > <value>
- 設置 sqlcmd 腳本變量。
如果使用 :Setvar 定義的變量和某個環境變量同名,則使用 :Setvar 定義的變量優先。變量名中不能包含空格字符。如果腳本變量的字符串值中含有空格,請用引號將該值引起來。否則將被華麗的無視。
如果未指定腳本變量的值,則將刪除該腳本變量。
變量名不能與變量表達式(例如 $(var))具有相同的形式