SQL Server 的xp_cmdshell和bcp使用

cathyspring發表於2018-04-13

啟用 xp_cmdshell

  1: sp_configure 'show advanced options',1
  2: reconfigure
  3: GO
  4: 
  5: sp_configure 'xp_cmdshell',1
  6: reconfigure
  7: go
  8: 

BCP測試

  1:    
  2:    --建立資料夾
  3:    DECLARE  @CmdLine VARCHAR(500)=' md E:\NetworkOptFtpServer'
  4:    PRINT @CmdLine
  5:    EXEC master.. xp_cmdshell @CmdLine
  6:    
  7:    --生成檔案 
  8:    SET  @CmdLine  = 'bcp " SELECT  * FROM table  " queryout  “E:\NetworkOptFtpServer\test_in.csv” -w -U sa  -P xxxx '
  9:    PRINT @CmdLine
 10:    EXEC master.. xp_cmdshell @CmdLine

指定編碼格式

  1: exec master..xp_cmdshell
  2: 'bcp "SELECT * FROM tablename" queryout "C:\test.txt" -T -c -C 65001'


最後的引數 -T 表示這是信任的連線,也就是說不用輸入密碼了;-c 表示按字元型別輸出;

-t “,” 用逗號分隔

bcp用於匯入匯出,匯出效率比較高,適合大表匯出

用法: bcp {dbtable | query} {in | out | queryout | format} 資料檔案

 [-m 最大錯誤數]             [-f 格式化檔案]       [-e 錯誤檔案]

  [-F 首行]                   [-L 末行]             [-b 批大小]

  [-n 本機型別]               [-c 字元型別]         [-w 寬字元型別]

  [-N 將非文字保持為本機型別] [-V 檔案格式版本]     [-q 帶引號的識別符號]

  [-C 內碼表說明符]           [-t 欄位終止符]       [-r 行終止符]

  [-i 輸入檔案]               [-o 輸出檔案]         [-a 資料包大小]

  [-S 伺服器名稱]             [-U 使用者名稱]           [-P 密碼]

  [-T 可信連線]               [-v 版本]             [-R 允許使用區域設定]

  [-k 保留 Null ]           [-E 保留標識值]

  [-h"載入提示"]              [-x 生成 xml 格式化檔案]

引數介紹:

bcp共有四個動作可以選擇。 

(1) 匯入。 

這個動作使用in命令完成,後面跟需要匯入的檔名。 

(2) 匯出。 

這個動作使用out命令完成,後面跟需要匯出的檔名。 

(3) 使用SQL語句匯出。 

這個動作使用queryout命令完成,它跟out類似,只是資料來源不是表或檢視名,而是SQL語句。 

(4) 匯出格式檔案。 

這個動作使用format命令完成,後而跟格式檔名。


注意:

1、如果是單獨執行生成檔案這一段,會報錯,CmdLine的引數必須先宣告

2. bcp內queryout後面的路徑,需要加“ ”引起來


相關文章