SQLSERVER調用BCP命令導入導出CSV文件


bcp命令可以在CMD 或 SQLSERVER中調用,這里適用SQLSERVER中調用的情況。

  • BCP命令參數
    BCP命令參數

  • 首先要開啟xp_cmdshell

    -- 允許配置高級選項  
    EXEC master.sys.sp_configure 'show advanced options', 1  
    -- 重新配置  
    RECONFIGURE  
    -- 啟用xp_cmdshell  
    EXEC master.sys.sp_configure 'xp_cmdshell', 1   
    ---- 禁用xp_cmdshell  
    -- EXEC master.sys.sp_configure 'xp_cmdshell', 0
    --重新配置  
    RECONFIGURE
    
  • BCP導出CSV文件

    -- 整表導出
    EXEC master..xp_cmdshell 'bcp TB_TEST01 out D:\TEST01.csv -S"(local)" -U"sa" -P"sa"  -t "," -w'
    
    -- SQL查詢結果導出
    EXEC master..xp_cmdshell 'bcp "SELECT COLA, COLB FROM TB_TEST01 WHERE COLA=1" queryout D:\TEST01.csv -S"(local)" -U"sa" -P"sa"  -t "," -w'
    
  • BCP導入CSV文件

    --將CSV文件導入表
    EXEC master..xp_cmdshell 'bcp TB_TEST01 in "D:\TEST01.csv" -S"(local)" -U"sa" -P"sa" -k -c -t"," -b 100000'
    
  • 特殊需求:

    • 導出的CSV文件字段加雙引號

      --方法: 在sql中加引號,然后再導出
      SELECT QUOTENAME(COLA,'"'),QUOTENAME(COLB,'"') FROM YYZX_RUN.dbo.TB_TEST01
      
      EXEC master..xp_cmdshell 'bcp "    SELECT QUOTENAME(COLA,'"'),QUOTENAME(COLB,'"') FROM TB_TEST01" queryout D:\TEST01.csv -S"(local)" -U"sa" -P"sa"  -t "," -w'
      
    • 導入的CSV文件中帶有雙引號

      情形一:TEST01.csv

      "DFAD","55"
      "DERE,RR","66"
      

      解決方案:導入后REPLACE()

      情形二:TEST01.csv

      DFAD,55
      "DERE,RR",66
      

      導入后數據會錯亂,暫時無解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM