bcp命令可以在CMD 或 SQLSERVER中調用,這里適用SQLSERVER中調用的情況。
-
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
導入后數據會錯亂,暫時無解。
-