[SQL]使用命令模式匯出查詢結果

  • 906
  • 0
  • SQL
  • 2017-02-10

工作中常常會與其它單位(上游或下游)交換資料,在完全不撰寫程式碼的情況之下,利用簡單的方式批次匯出

記錄一下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