bcp 實用工具能夠在 Microsoft SQL Server 實例和用戶指定格式的數據文件間大容量複製數據。 使用 bcp 實用工具能夠將大量新行導入 SQL Server 表,或將表數據導出到數據文件。 除非與 queryout 選項一塊兒使用,不然使用該實用工具不須要了解 Transact-SQL 知識。 若要將數據導入表中,必須使用爲該表建立的格式文件,或者必須瞭解表的結構以及對於該表中的列有效的數據類型。html
BCP的全部參數:shell
BCP能夠執行的4種操做windows
(1) 導入
這個動做使用in命令完成,後面跟須要導入的文件名。
(2) 導出
這個動做使用out命令完成,後面跟須要導出的文件名。
(3) 使用SQL語句導出
這個動做使用queryout命令完成,它跟out相似,只是數據源不是表或視圖名,而是SQL語句。
(4) 導出格式文件
這個動做使用format命令完成,後而跟格式文件名。安全
經常使用操做:服務器
1. BCP 可信任鏈接到本地表導出:工具
用windows認證登錄並把text.dbo.name的表導出到D盤的 t_001.txtui
2. BCP 可信任鏈接到導出查詢spa
3. BCP 可信任鏈接連到遠程服務器導出查詢code
也可使用下面的T-SQL命令:orm
EXEC master..xp_cmdshell 'BCP test.dbo.name out d:\t_002.txt -c -t -T' EXEC master..xp_cmdshell 'BCP "select name from test.dbo.name" queryout d:\t_004.txt -c -t -T' EXEC master..xp_cmdshell 'BCP tran_test.dbo.uptrans out d:\t_006.txt -c -t -S HOUYAJUN\JHIDCDBS005 -T'
在執行上述命令的時候可能會報錯 : 錯誤提示:消息 15281,級別 16,狀態 1,過程 xp_cmdshell,第 1 行
SQL Server 阻止了對組件 'xp_cmdshell' 的 過程 'sys.xp_cmdshell' 的訪問,由於此組件已做爲此服務器安全配置的一部分而被關閉。系統管理員能夠經過使用 sp_configure 啓用 'xp_cmdshell'。有關啓用 'xp_cmdshell' 的詳細信息,請參閱 SQL Server 聯機叢書中的 "外圍應用配置器"。
這個時候須要咱們來開啓 :
-- 容許配置高級選項 EXEC master.sys.sp_configure 'show advanced options', 1 -- 從新配置 RECONFIGURE -- 啓用xp_cmdshell EXEC master.sys.sp_configure 'xp_cmdshell', 1 --從新配置 RECONFIGURE
用完以後再把其關閉,關閉只須要把 1 變爲 0 便可。
上面的語句也能夠經過輸入用戶名和密碼的形式出來,以下例句:
EXEC master..xp_cmdshell 'BCP test.dbo.name out d:\t_008.txt -c -t -U"sa" -P"ssssaaaa"'
4. BCP的導入 只須要把上面的 OUT 變爲 in 就能夠了。
EXEC master..xp_cmdshell 'BCP test.dbo.name in d:\t_002.txt -c -t -U -T'
這個是對剛纔導出的數據進行從新的導入,能夠很明顯的看到表中的數據已經增長了。
經常使用參數:
-f format_file
format_file表示格式文件名。這個選項依賴於上述的動做,若是使用的是in或out,format_file表示已經存在的格式文件,若是使用的是format則表示是要生成的格式文件。-x
這個選項要和-f format_file配合使用,以便生成xml格式的格式文件。-F first_row
指定從被導出表的哪一行導出,或從被導入文件的哪一行導入。-L last_row
指定被導出表要導到哪一行結束,或從被導入文件導數據時,導到哪一行結束。-c
使用char類型作爲存儲類型,沒有前綴且以"\t"作爲字段分割符,以"\n"作爲行分割符。-w
和-c相似,只是當使用Unicode字符集拷貝數據時使用,且以nchar作爲存儲類型。-t field_term
指定字符分割符,默認是"\t"。-r row_term
指定行分割符,默認是"\n"。-S server_name[ \instance_name]
指定要鏈接的SQL Server服務器的實例,若是未指定此選項,BCP鏈接本機的SQL Server默認實例。若是要鏈接某臺機器上的默認實例,只須要指定機器名便可。-U login_id
指定鏈接SQL Sever的用戶名。-P password
指定鏈接SQL Server的用戶名密碼。-T
指定BCP使用信任鏈接登陸SQL Server。若是未指定-T,必須指定-U和-P。-k
指定空列使用null值插入,而不是這列的默認值。
https://www.cnblogs.com/zerocc/p/3225723.html