工作中常常會與其它單位(上游或下游)交換資料,在完全不撰寫程式碼的情況之下,利用簡單的方式批次匯出
記錄一下SQLCMD使用的參數與範例:
--[-S]:資料庫伺服器
--[-U]:使用者
--[-P]:密碼
--[-d]:資料庫名稱
--[/h-1]:不產生欄位名稱
--[-i]:input SQL指令
--[-o]:output 查詢結果
--[-s]:使用","分隔
C:\>sqlcmd -S [資料庫伺服器] -U [使用者] -P [密碼] -d [資料庫名稱] /h-1
-i D:\Script.sql -o D:\log.txt -s","
編寫之後存成 .BAT 就可以批次產生全部的資料。
Q:在產出的結果中不想產生統計資料?
A:只要在每一個查詢SQL前加入-- SET NOCOUNT ON,查詢結果將不的出現統計資料。
Q:產生'< UNC 路徑 >' 是無效的目前目錄路徑。不支援 UNC 路徑。預設為 Windows 目錄。
A:設定註冊檔如下,或將路徑用 " "包起來
reg add "HKEY_CURRENT_USER\Software\Microsoft\Command Processor" /v DisableUNCCheck /t REG_DWORD /d 1 /f
Q:產生檔案時每一個欄位間會有很多空白
A:可以加 -W 去除所有的空白值
參考資料:
KingKong Bruce記事:http://stackoverflow.com/questions/23221532/remove-column-header-from-sql-server-query-result
Stack Overflow:http://blog.kkbruce.net/2011/01/sqlcmdt-sql.html#.VuIyo-J95R0
MSDN:https://msdn.microsoft.com/zh-tw/library/ms170572(v=sql.120).aspx